Python用TCP编写一个简单的通信实例

Python实现UDP通信的实例:https://blog.csdn.net/SenrendipityAl/article/details/103381279

TCP通信

TCP 每次建立通信,都需要三次握手,确定双方状态完毕,在发送数据。如果发送的数据出现了异常,TCP 也内置了一些处理的机制,确保了数据能准确到达目的地。

接下来我尝试用Python实现TCP协议的通信。

TCP服务器

  1. import socket
  2. # 参数调整
  3. HOST = '127.0.0.1'
  4. PORT = 9999
  5. BufferSize = 1024
  6. # socket.AF_INET (IPV4)
  7. # socket.SOCK_STREAM (TCP)
  8. s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  9. # 绑定客户端IP和端口号
  10. s.bind((HOST, PORT))
  11. # 最大允许连接数量
  12. s.listen(3)
  13. # 阻塞,当出现客户端的请求完成连接,并获取数据和客户端的信息
  14. conn, addr = s.accept()
  15. while True:
  16. # 读取客户端发送过来的数据
  17. data = conn.recv(BufferSize)
  18. print("Received from %s: %s" % (addr, data.decode('gb2312')))
  19. # 把客服端发送过来的数据又转发回去
  20. conn.sendall('I got it!'.encode('gb2312'))
  21. # 关闭客户端连接
  22. # conn.colse()
输出结果

Server输出结果

注意事项

需要注意的是,在本实例中,仅实现了端到端多次通信的效果,事实上,TCP服务器完全可以接受多个客户端的连接,即上述代码中s.listen(3)中规定了最大连接数。

如果想要同时实现多个连接,只需将连接客户端的代码放入While循环,并在While最后关闭连接即可。

TCP客户机

  1. # 导入套接字的包
  2. import socket
  3. # 参数调整
  4. HOST = '127.0.0.1'
  5. PORT = 9999
  6. BufferSize = 1024
  7. # socket.AF_INET (IPV4)
  8. # socket.SOCK_STREAM (TCP)
  9. s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  10. # 连接服务端
  11. s.connect((HOST, PORT))
  12. while True:
  13. # 输入待发送数据
  14. print('Please input your data:')
  15. InputData = input('> ')
  16. # 发送数据到服务端
  17. s.sendall(InputData.encode('gb2312'))
  18. # 接收服务端返回数据
  19. ReceiveData = s.recv(BufferSize)
  20. print(ReceiveData.decode('gb2312'))
  21. # 关闭 socket
  22. # s.close()
输出结果

Client输出结果

注意事项

暂无

发表评论

表情:
评论列表 (有 0 条评论,3人围观)

还没有评论,来说两句吧...

相关阅读