python中的socket模块,python实现socket

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: