python使用socket创建tcp服务器和客户端
时间:2019-04-14
本文章向大家介绍python使用socket创建tcp服务器和客户端,主要包括python使用socket创建tcp服务器和客户端使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
python使用socket创建tcp服务器和客户端。
服务器端为一个时间戳服务器,在接收到客户端发来的数据后,自动回复。
客户端,等待用户输入,回车后向服务器发送用户输入的内容。
分别在python2.7和python3.6下测试。在启动时需要先启动服务器端,在启动客户端。
python2.7下
服务器端代码为
#coding:utf-8 from socket import * from time import ctime print("=====================时间戳TCP服务器====================="); HOST = '' #主机号为空白表示可以使用任何可用的地址。 PORT = 21567 #端口号 BUFSIZ = 1024 #接收数据缓冲大小 ADDR = (HOST, PORT) tcpSerSock = socket(AF_INET, SOCK_STREAM) #创建TCP服务器套接字 tcpSerSock.bind(ADDR) #套接字与地址绑定 tcpSerSock.listen(5) #监听连接,同时连接请求的最大数目 while True: print('等待客户端的连接...') tcpCliSock, addr = tcpSerSock.accept() #接收客户端连接请求 print('取得连接:', addr) while True: data = tcpCliSock.recv(BUFSIZ) #连续接收指定字节的数据,接收到的是字节数组 if not data: #如果数据空白,则表示客户端退出,所以退出接收 break tcpCliSock.send('[%s] %s' % (ctime(), data)) #向客户端发送时间戳数据 tcpCliSock.close() #关闭与客户端的连接 tcpSerSock.close() #关闭服务器socket
客户端代码为
#coding:utf-8 from socket import * print("=====================TCP客户端====================="); HOST = '127.0.0.1' #服务器ip地址,等价于localhost PORT = 21567 #通信端口号 BUFSIZ = 1024 #接收数据缓冲大小 ADDR = (HOST, PORT) tcpCliSock = socket(AF_INET, SOCK_STREAM) #创建客户端套接字 tcpCliSock.connect(ADDR) #发起TCP连接 while True: data = raw_input('> ') #接收用户输入 if not data: #如果用户输入为空,直接回车就会发送"",""就是代表false break tcpCliSock.send(data) #客户端发送消息 data = tcpCliSock.recv(BUFSIZ) #接收回应消息,接收到的是字节数组 if not data: #如果接收服务器信息失败,或没有消息回应 break print(data) #打印回应消息 tcpCliSock.close() #关闭客户端socket
python3.6下
服务器端代码为
#coding:utf-8 from socket import * from time import ctime print("=====================时间戳TCP服务器====================="); HOST = '127.0.0.1' #主机号为空白表示可以使用任何可用的地址。 PORT = 21567 #端口号 BUFSIZ = 1024 #接收数据缓冲大小 ADDR = (HOST, PORT) tcpSerSock = socket(AF_INET, SOCK_STREAM) #创建TCP服务器套接字 tcpSerSock.bind(ADDR) #套接字与地址绑定 tcpSerSock.listen(5) #监听连接,同时连接请求的最大数目 while True: print('等待客户端的连接...') tcpCliSock, addr = tcpSerSock.accept() #接收客户端连接请求 print('取得连接:', addr) while True: data = tcpCliSock.recv(BUFSIZ) #连续接收指定字节的数据,接收到的是字节数组 if not data: #如果数据空白,则表示客户端退出,所以退出接收 break #tcpCliSock.send('[%s] %s' % (bytes(ctime(), 'utf-8'), data)) tcpCliSock.send(bytes('[%s] %s' % (ctime(), data.decode('utf-8')), 'utf-8')) #向客户端发送时间戳数据,必须发送字节数组 tcpCliSock.close() #关闭与客户端的连接 tcpSerSock.close() #关闭服务器socket
客户端代码为
#coding:utf-8 from socket import * print("=====================TCP客户端====================="); HOST = '127.0.0.1' #服务器ip地址,等价于localhost PORT = 21567 #通信端口号 BUFSIZ = 1024 #接收数据缓冲大小 ADDR = (HOST, PORT) tcpCliSock = socket(AF_INET, SOCK_STREAM) #创建客户端套接字 tcpCliSock.connect(ADDR) #发起TCP连接 while True: data = input('> ') #接收用户输入 if not data: #如果用户输入为空,直接回车就会发送"",""就是代表false break tcpCliSock.send(bytes(data, 'utf-8')) #客户端发送消息,必须发送字节数组 data = tcpCliSock.recv(BUFSIZ) #接收回应消息,接收到的是字节数组 if not data: #如果接收服务器信息失败,或没有消息回应 break print(data.decode('utf-8')) #打印回应消息,或者str(data,"utf-8") tcpCliSock.close() #关闭客户端socket
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
- 堆和栈的区别
- 深入理解和应用display属性(二)
- Philip S.Yu 讲的广度学习到底是什么?
- Kubernetes服务网格(第10部分):服务网格API
- 刚刚,同程与艺龙宣布合并!去你的大数据!
- 从蓝光到4K,腾讯视频高码率下载背后的技术
- 从开发者的角度比较IAAS与PAAS
- 图灵机器人郭家:以语义技术为核心驱动力,让机器更好地理解世界
- 静态条码设支付上限,500元封顶,海外支付尚未通知
- 如何自动地将代码从Git平台部署至组件容器
- 聂卫平说过人工智能不会取代人类 只会让我们生活的更加美好
- 万达裁员遭人大教授怒怼:员工如告了 王健林赔不少
- 习题3.13
- 谷歌数据显示比特币年度搜索量排名位居前列
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- nginx location配置
- 快速学习-RocketMQ Dledger快速搭建
- 原创 | 非典型算法题,用程序和电脑玩一个游戏
- 快速学习-RocketMQ Dledger集群搭建
- 原创 | 你能想出解法,让你的基友少氪金吗?
- 快速学习-ElasticJob运维平台
- 第34期:最后一个单词的长度(高频)
- 原创 | 学会这三个命令,你就不再是git只会用三板斧的菜鸟了
- 构建Flink第一个应用程序
- 第35期:从 DFS 学习二叉树!(适合小白)
- ROS自平衡车案例学习(机器人操作系统+现代控制理论融合)
- Git 不能提交空目录?我也是醉了!
- 相关矩阵、特征、预测、股市!(附代码)
- CentOS7下编译安装libmodbus库
- 你还以为使用 StringBuffer 就万事大吉了?