当前位置:   article > 正文

python实现TCP服务器与多个客户端通信案例_python tcp socket通信 多client

python tcp socket通信 多client

 1.TCP实现服务器端与多个客户端通信

  1. import socket
  2. def main():
  3. # 1. 创建套接字socket
  4. tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  5. # 2. 绑定本地信息 bind
  6. tcp_server_socket.bind(("", 7890))
  7. # 3. 让默认的套接字由主动变为被动 listen
  8. tcp_server_socket.listen(128)
  9. while True:
  10. print("等待一个新的客户端的到来...")
  11. # 4. 等待别人的电话到来(等待客户端的链接 accept)
  12. new_client_socket, client_addr = tcp_server_socket.accept()
  13. print("一个新的客户端已经到来%s" % str(client_addr))
  14. # 接收客户端发送过来的请求
  15. recv_data = new_client_socket.recv(1024) #注意这个1024byte,大小根据需求自己设置
  16. print("客户端福送过来的请求是:%s" % recv_data.decode("utf-8"))
  17. # 回送一部分数据给客户端
  18. new_client_socket.send("hahahghai-----ok-----".encode("utf-8"))
  19. # 关闭套接字
  20. # 关闭accept返回的套接字 意味着 不会在为这个客户端服务
  21. new_client_socket.close()
  22. print("已经服务器完毕。。。。")
  23. # 如果将监听套接字 关闭了,那么会导致 不能再次等待新客户端的到来,即xxxx.accept就会失败
  24. tcp_server_socket.close()
  25. if __name__ == "__main__":
  26. main()

2.TCP实现与多个客户端多次通信

  1. import socket
  2. def main():
  3. # 1.创建套接字 socket
  4. tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  5. # 2. 绑定本地信息 bind
  6. tcp_server_socket.bind(("", 7890))
  7. # 3. 让默认的套接字由主动变为被动 listen
  8. tcp_server_socket.listen(128)
  9. # 循环目的:调用多次accept,从而为多个客户端服务
  10. while True:
  11. print("等待一个新的客户端的到来...")
  12. # 4. 等待别人的电话到来(等待客户端的链接 accept)
  13. new_client_socket, client_addr = tcp_server_socket.accept()
  14. print("一个新的客户端已经到来%s" % str(client_addr))
  15. # 循环目的: 为同一个客户端 服务多次
  16. while True:
  17. # 接收客户端发送过来的请求
  18. recv_data = new_client_socket.recv(1024)
  19. print("客户端福送过来的请求是:%s" % recv_data.decode("utf-8"))
  20. # 如果recv解堵塞,那么有2种方式:
  21. # 1. 客户端发送过来数据
  22. # 2. 客户端调用close导致而了 这里 recv解堵塞(客户端主动断开连接)
  23. if recv_data:
  24. # 回送一部分数据给客户端
  25. new_client_socket.send("hahahghai-----ok-----".encode("utf-8"))
  26. else:
  27. break
  28. # 关闭套接字
  29. # 关闭accept返回的套接字 意味着 不会在为这个客户端服务
  30. new_client_socket.close()
  31. print("已经为这个客户端服务完毕。。。。")
  32. # 如果将监听套接字 关闭了,那么会导致 不能再次等待新客户端的到来,即xxxx.accept就会失败
  33. tcp_server_socket.close()
  34. if __name__ == "__main__":
  35. main()

可以通过网络调试助手实现多个客户端同时与其通信,但是问题必须是一个个通信,排队。

统一声明:关于原创博客内容,可能会有部分内容参考自互联网,如有原创链接会声明引用;如找不到原创链接,在此声明如有侵权请联系删除哈。关于转载博客,如有原创链接会声明;如找不到原创链接,在此声明如有侵权请联系删除哈。 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/正经夜光杯/article/detail/949692
推荐阅读
相关标签
  

闽ICP备14008679号