Python+Socket实现基于TCP协议的客户与服务端中文自动回复聊天功
本篇章节讲解Python+Socket实现基于TCP协议的客户与服务端中文自动回复聊天功能。分享给大家供大家参考,具体如下: 【吐槽】 网上的代码害死人,看着都写的言之凿凿,可运行就是有问题。 【正文】 昨日修改运行了UDP协议的C/S聊天程序,可是TCP协议的怎么都不行。各种试,各种坑。 做了下面几个修改后,终于可以了: 1、对发送、接收的信息,分别进行编码和解码 (本文基于windows 7 + python 3.4) 完整代码如下(人头担保,本人亲测正常!): 服务器端: # tcp_server.py '''服务器''' from socket import * from time import ctime HOST = '' #主机地址 PORT = 23345 #端口号 BUFSIZ = 2048 #缓存区大小,单位是字节,这里设定了2K的缓冲区 ADDR = (HOST,PORT) #链接地址 tcpSerSock = socket(AF_INET,SOCK_STREAM) #创建一个TCP套接字 tcpSerSock.bind(ADDR) #绑定地址 tcpSerSock.listen(5) #最大连接数为5 while True: #无限循环 print('尝试连接客户端。。。') tcpCliSock,addr = tcpSerSock.accept() #等待接受连接 print('链接成功,客户端地址为:',addr) while True: data = tcpCliSock.recv(BUFSIZ) #接收数据,BUFSIZ是缓存区大小 if not data: break #如果data为空,则跳出循环 print(data.decode()) msg = '{} 服务器已接收 [自动回复]'.format(ctime()) tcpCliSock.send(msg.encode()) tcpCliSock.close() #关闭连接 tcpSerSock.close() #关闭服务器 客户端: # tcp_client.py '''客户端''' from socket import * from time import ctime HOST = 'localhost' #主机地址 PORT = 23345 #端口号 BUFSIZ = 2048 #缓存区大小,单位是字节,这里设定了2K的缓冲区 ADDR = (HOST,PORT) #链接地址 tcpCliSock = socket(AF_INET,SOCK_STREAM) #创建一个TCP套接字 #tcpCliSock.bind(ADDR) #绑定地址 tcpCliSock.connect(ADDR) #绑定地址 while True: msg = input('请输入:') #输入数据 if not msg: break #如果 msg 为空,则跳出循环 tcpCliSock.send(msg.encode()) data = tcpCliSock.recv(BUFSIZ) #接收数据,BUFSIZ是缓存区大小 if not data: break #如果data为空,则跳出循环 print(data.decode()) 【运行截图】 实验方法:先运行服务器端,然后运行客户端 然后就可以在客户端自由的与服务器端聊天了: 更多关于Python相关内容可查看本站专题:《Python Socket编程技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》 希望本文所述对大家Python程序设计有所帮助。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |