当前位置: 技术文章>> 100道python面试题之-如何使用Python的socket库创建TCP和UDP服务器与客户端?

文章标题:100道python面试题之-如何使用Python的socket库创建TCP和UDP服务器与客户端?
  • 文章分类: 后端
  • 7458 阅读
在Python中,使用`socket`库可以方便地创建TCP和UDP的服务器与客户端。下面分别介绍如何使用`socket`库来创建这两种类型的服务器和客户端。 ### TCP 服务器 TCP服务器通常监听一个端口,等待客户端的连接请求,然后接收来自客户端的数据,处理这些数据,并可能发送响应给客户端。 ```python import socket def tcp_server(host='127.0.0.1', port=12345): server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server_socket.bind((host, port)) server_socket.listen(5) # 最大连接数 print(f"TCP服务器启动,监听{host}:{port}") while True: client_socket, addr = server_socket.accept() print(f"接受来自{addr}的连接") try: while True: data = client_socket.recv(1024) if not data: break print(f"收到数据: {data.decode()}") # 发送响应 client_socket.sendall(data) finally: client_socket.close() if __name__ == '__main__': tcp_server() ``` ### TCP 客户端 TCP客户端连接到服务器,发送数据,并接收来自服务器的响应。 ```python import socket def tcp_client(server_host='127.0.0.1', server_port=12345): client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) client_socket.connect((server_host, server_port)) try: message = input("请输入要发送的消息: ") client_socket.sendall(message.encode()) data = client_socket.recv(1024) print(f"来自服务器的响应: {data.decode()}") finally: client_socket.close() if __name__ == '__main__': tcp_client() ``` ### UDP 服务器 UDP服务器与TCP服务器的主要区别在于UDP是无连接的,并且不保证数据包的顺序和完整性。 ```python import socket def udp_server(host='127.0.0.1', port=12345): server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) server_socket.bind((host, port)) print(f"UDP服务器启动,监听{host}:{port}") while True: data, addr = server_socket.recvfrom(1024) print(f"从{addr}接收数据: {data.decode()}") # 发送响应 server_socket.sendto(data, addr) if __name__ == '__main__': udp_server() ``` ### UDP 客户端 UDP客户端发送数据到服务器,并接收来自服务器的响应(如果服务器设计为发送响应)。 ```python import socket def udp_client(server_host='127.0.0.1', server_port=12345): client_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) message = input("请输入要发送的消息: ") client_socket.sendto(message.encode(), (server_host, server_port)) data, server = client_socket.recvfrom(1024) print(f"来自服务器的响应: {data.decode()}") client_socket.close() if __name__ == '__main__': udp_client() ``` 以上示例展示了如何使用Python的`socket`库来创建TCP和UDP的服务器与客户端。这些示例可以作为构建更复杂网络通信应用的基础。