python中的socket模块,python实现socket
本文描述了基于TCP协议的客户端与服务器端中文自动回复聊天的Python Socket实现。分享给你,供你参考,如下:
[吐槽]
网上的代码杀人,看起来一切都写的很认真,但是操作上有问题。
有些爱代码,喜欢收集代码的朋友看到别人的代码就粘贴复制。但至少试着经营它,大哥。
[正文]
昨天修改了运行UDP协议的C/S聊天程序,但是TCP协议不行。各种测试,各种坑。
在做了以下修改后,它终于工作了:
1.分别对发送和接收的信息进行编码和解码。
2.客户端第10行,bind改为connect(这真的是一个大漏洞!)
(本文基于windows 7 python 3.4)
完整代码如下(头部保证,我亲测正常!):
服务器端:
# tcp_server.py
服务器
从套接字导入*
从时间导入ctime
主机=“”#主机地址
PORT=23345 #端口号
BUFSIZ=2048 #缓冲区大小,单位是字节,这里设置了一个2K的缓冲区。
ADDR=(主机,端口)#链路地址
TCP sock=socket(af _ inet,sock _ stream) #创建一个TCP套接字
TcpSerSock.bind(ADDR) #绑定地址
TcpSerSock.listen(5) #最大连接数是5。
While True: #无限循环
打印(尝试连接到客户端。)
Tclisock,addr=tcpsersock.accept () #等待接受连接。
打印(链接成功,客户端地址为:,地址)
虽然正确:
Data=tcpCliSock.recv(BUFSIZ) #接收数据,BUFSIZ是缓冲区大小。
If data: break #如果数据为空,则跳出循环
print(data.decode())
Msg={}服务器已收到[自动回复]。格式(ctime())
tcpCliSock.send(msg.encode())
TcpCliSock.close() #关闭连接
TcpSerSock.close() #关闭服务器
客户:
# tcp_client.py
客户端
从套接字导入*
从时间导入ctime
HOST=localhost #主机地址
PORT=23345 #端口号
BUFSIZ=2048 #缓冲区大小,单位是字节,这里设置了一个2K的缓冲区。
ADDR=(主机,端口)#链路地址
Tclisock=socket (af _ inet,sock _ stream) #创建一个TCP套接字
#tcpCliSock.bind(ADDR) #绑定地址
TcpCliSock.connect(ADDR) #绑定地址
虽然正确:
Msg=input(请输入:)#输入数据
If msg: break #如果msg为空,则跳出循环
tcpCliSock.send(msg.encode())
Data=tcpCliSock.recv(BUFSIZ) #接收数据,BUFSIZ是缓冲区大小。
If data: break #如果数据为空,则跳出循环
print(data.decode())
[运行截图]
方法:先运行服务器,再运行客户端。
然后就可以在客户端和服务器自由聊天了:
希望本文对Python编程有所帮助。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。