Python 网络编程之TCP客户端/服务端功能示例【基于socket套接字】


Posted in Python onOctober 12, 2019

本文实例讲述了Python 网络编程之TCP客户端/服务端功能。分享给大家供大家参考,具体如下:

demo.py(TCP客户端):

import socket
def main():
  # 1. 创建tcp的套接字
  tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  # 2. 链接服务器
  # tcp_socket.connect(("192.168.33.11", 7890))
  server_ip = input("请输入要链接的服务器的ip:")
  server_port = int(input("请输入要链接的服务器的port:"))
  server_addr = (server_ip, server_port)
  tcp_socket.connect(server_addr)
  # 3. 发送数据/接收数据
  send_data = input("请输入要发送的数据:")
  tcp_socket.send(send_data.encode("utf-8"))
  # 接收数据。 会阻塞代码,直到接收到数据
  recv_data = tcp_socket.recv(1024) # 1024表示本次接收的最大字节数。
  print(recv_data.decode("utf-8"))
  # 4. 关闭套接字
  tcp_socket.close()
if __name__ == "__main__":
  main()

demo.py(TCP服务端):

import socket
def main():
  # 1. 创建套接字 socket
  tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  # 设置当服务器先close 即服务器端4次挥手之后资源能够立即释放,这样就保证了,下次运行程序时 可以立即绑定7890端口 (如果服务端先close,再启动服务端就不会报端口被占用的错误。)
  tcp_server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
  # 2. 绑定本机ip和端口号 bind
  tcp_server_socket.bind(("", 7890))
  # 3. 监听客户端的链接请求 listen (由主动去链接服务器,变成被客户端链接)
  tcp_server_socket.listen(128) # 128影响链接客户端的数量(并发量)(和操作系统也有关)
  # 4. 接受客户端的链接 accept。 会阻塞代码,直到有客户端链接
  new_client_socket, client_addr = tcp_server_socket.accept()
  print(client_addr) # ("192.168.33.109",53766) 客户端的ip和端口
  # 接收客户端发送过来的数据。 会阻塞代码,直到接收到数据
  recv_data = new_client_socket.recv(1024) # 1024表示本次接收的最大字节数。
  print(recv_data.decode("utf-8")) # 如果recv_data为空,表示客户端断开链接
  # 写数据给客户端
  new_client_socket.send("hahahghai-----ok-----".encode("utf-8"))
  # 关闭套接字
  new_client_socket.close() # 与客户端通信的套接字
  tcp_server_socket.close() # 服务器套接字
if __name__ == "__main__":
  main()

更多关于Python相关内容可查看本站专题:《Python Socket编程技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python socket编程实例详解
May 27 Python
Python管理Windows服务小脚本
Mar 12 Python
python实现百度语音识别api
Apr 10 Python
Python使用min、max函数查找二维数据矩阵中最小、最大值的方法
May 15 Python
详解利用django中间件django.middleware.csrf.CsrfViewMiddleware防止csrf攻击
Oct 09 Python
python bmp转换为jpg 并删除原图的方法
Oct 25 Python
Python实现截取PDF文件中的几页代码实例
Mar 11 Python
Python正则表达式匹配和提取IP地址
Jun 06 Python
Python 日期区间处理 (本周本月上周上月...)
Aug 08 Python
详解Python3 中的字符串格式化语法
Jan 15 Python
Django关于admin的使用技巧和知识点
Feb 10 Python
python图像处理 PIL Image操作实例
Apr 09 Python
Python Collatz序列实现过程解析
Oct 12 #Python
python logging日志模块原理及操作解析
Oct 12 #Python
Python爬虫之urllib基础用法教程
Oct 12 #Python
python 生成器和迭代器的原理解析
Oct 12 #Python
python 表格打印代码实例解析
Oct 12 #Python
Django+uni-app实现数据通信中的请求跨域的示例代码
Oct 12 #Python
python3.7将代码打包成exe程序并添加图标的方法
Oct 11 #Python
You might like
php读取纯真ip数据库使用示例
2014/01/26 PHP
Laravel中使用自己编写类库的3种方法
2015/02/10 PHP
PHP的文件操作与算法实现的面试题示例
2015/08/10 PHP
php中json_encode不兼容JSON_UNESCAPED_UNICODE的解决方案
2016/05/31 PHP
PHP简单字符串过滤方法示例
2016/09/04 PHP
jquery 获取json数据实现代码
2009/04/27 Javascript
js 父窗口控制子窗口的行为-打开,关闭,重定位,回复
2010/04/20 Javascript
7款吸引人眼球的jQuery/CSS3特效实例分享
2013/04/25 Javascript
Jquery时间验证和转换工具小例子
2013/07/01 Javascript
Javascript 实现的数独解题算法网页实例
2013/10/15 Javascript
jquery实现无限分级横向导航菜单的方法
2015/03/12 Javascript
纯javascript代码实现计算器功能(三种方法)
2015/09/07 Javascript
EasyUI闪屏EasyUI页面加载提示(原理+代码+效果图)
2016/02/21 Javascript
JavaScript的==运算详解
2016/07/20 Javascript
详解js前端代码异常监控
2017/01/11 Javascript
前端构建工具之gulp的配置与搭建详解
2017/06/12 Javascript
angular ng-model 无法获取值的处理方法
2018/10/02 Javascript
微信小程序全局变量GLOBALDATA的定义和调用过程解析
2019/09/23 Javascript
如何基于filter实现网站整体变灰功能
2020/04/17 Javascript
Vue SPA 首屏优化方案
2021/02/26 Vue.js
[05:00]第二届DOTA2亚洲邀请赛主赛事第三天比赛集锦.mp4
2017/04/04 DOTA
用Python实现一个简单的线程池
2015/04/07 Python
mac下给python3安装requests库和scrapy库的实例
2018/06/13 Python
python读取并写入mat文件的方法
2019/07/12 Python
Python实现直方图均衡基本原理解析
2019/08/08 Python
Pytorch 的损失函数Loss function使用详解
2020/01/02 Python
Python实现Canny及Hough算法代码实例解析
2020/08/06 Python
利用python绘制正态分布曲线
2021/01/04 Python
HTML5 Canvas绘制五星红旗
2016/05/04 HTML / CSS
Expedia韩国官网:亚洲发展最快的在线旅游门户网站
2018/02/26 全球购物
Lampenwelt德国:欧洲领先的灯具和照明在线商店
2018/08/05 全球购物
教师见习报告范文
2014/11/03 职场文书
2014年维修电工工作总结
2014/11/20 职场文书
《迟到》教学反思
2016/02/24 职场文书
深度学习tensorflow基础mnist
2021/04/14 Python
Python爬虫基础讲解之请求
2021/05/13 Python