作者:萌星 | 来源:互联网 | 2023-06-10 15:26
1.TCP实现服务器端与多个客户端通信importsocketdefmain():#1.创建套接字sockettcp_server_socketsocket.socket(soc
1.TCP实现服务器端与多个客户端通信
import socketdef main():# 1. 创建套接字sockettcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)# 2. 绑定本地信息 bindtcp_server_socket.bind(("", 7890))# 3. 让默认的套接字由主动变为被动 listentcp_server_socket.listen(128)while True:print("等待一个新的客户端的到来...")# 4. 等待别人的电话到来(等待客户端的链接 accept)new_client_socket, client_addr = tcp_server_socket.accept()print("一个新的客户端已经到来%s" % str(client_addr))# 接收客户端发送过来的请求recv_data = new_client_socket.recv(1024) #注意这个1024byte,大小根据需求自己设置print("客户端福送过来的请求是:%s" % recv_data.decode("utf-8"))# 回送一部分数据给客户端new_client_socket.send("hahahghai-----ok-----".encode("utf-8"))# 关闭套接字# 关闭accept返回的套接字 意味着 不会在为这个客户端服务new_client_socket.close()print("已经服务器完毕。。。。")# 如果将监听套接字 关闭了,那么会导致 不能再次等待新客户端的到来,即xxxx.accept就会失败tcp_server_socket.close()if __name__ == "__main__":main()
2.TCP实现与多个客户端多次通信
import socketdef main():# 1.创建套接字 sockettcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)# 2. 绑定本地信息 bindtcp_server_socket.bind(("", 7890))# 3. 让默认的套接字由主动变为被动 listentcp_server_socket.listen(128)# 循环目的:调用多次accept,从而为多个客户端服务while True:print("等待一个新的客户端的到来...")# 4. 等待别人的电话到来(等待客户端的链接 accept)new_client_socket, client_addr = tcp_server_socket.accept()print("一个新的客户端已经到来%s" % str(client_addr))# 循环目的: 为同一个客户端 服务多次while True:# 接收客户端发送过来的请求recv_data = new_client_socket.recv(1024)print("客户端福送过来的请求是:%s" % recv_data.decode("utf-8"))# 如果recv解堵塞,那么有2种方式:# 1. 客户端发送过来数据# 2. 客户端调用close导致而了 这里 recv解堵塞(客户端主动断开连接)if recv_data:# 回送一部分数据给客户端new_client_socket.send("hahahghai-----ok-----".encode("utf-8"))else:break# 关闭套接字# 关闭accept返回的套接字 意味着 不会在为这个客户端服务new_client_socket.close()print("已经为这个客户端服务完毕。。。。")# 如果将监听套接字 关闭了,那么会导致 不能再次等待新客户端的到来,即xxxx.accept就会失败tcp_server_socket.close()if __name__ == "__main__":main()
可以通过网络调试助手实现多个客户端同时与其通信,但是问题必须是一个个通信,排队。
统一声明:关于原创博客内容,可能会有部分内容参考自互联网,如有原创链接会声明引用;如找不到原创链接,在此声明如有侵权请联系删除哈。关于转载博客,如有原创链接会声明;如找不到原创链接,在此声明如有侵权请联系删除哈。