创建一个简单的聊天工具,可以使用Python的`socket`模块进行网络通信,并通过多线程处理多个客户端的连接。以下是一个基本的聊天服务器和客户端的示例代码:
服务器端代码
import socketimport threadingSERVER_HOST = '127.0.0.1'SERVER_PORT = 12345def handle_client(client_socket, addr):print(f"[{addr}:{addr}] 已连接")while True:try:message = client_socket.recv(1024).decode('utf-8')if message == 'exit':breakprint(f"[{addr}:{addr}] 收到消息: {message}")client_socket.sendall(f"服务器收到消息: {message}".encode('utf-8'))except Exception as e:print(f"客户端断开连接: {e}")breakclient_socket.close()def main():server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)server.bind((SERVER_HOST, SERVER_PORT))server.listen(5)print(f"服务器启动,监听 {SERVER_HOST}:{SERVER_PORT}")while True:client_socket, addr = server.accept()client_handler = threading.Thread(target=handle_client, args=(client_socket, addr))client_handler.start()if __name__ == "__main__":main()
客户端代码
import socketSERVER_HOST = '127.0.0.1'SERVER_PORT = 12345def main():client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)client.connect((SERVER_HOST, SERVER_PORT))while True:message = input("请输入消息: ")if message.lower() == 'exit':breakclient.sendall(message.encode('utf-8'))data = client.recv(1024)print(f"收到服务器消息: {data.decode('utf-8')}")client.close()if __name__ == "__main__":main()
运行步骤
1. 首先运行服务器端代码,启动聊天服务器。
2. 然后运行客户端代码,连接到服务器。
3. 在客户端输入消息并发送,服务器和客户端将互相显示接收到的消息。
4. 若要退出,客户端发送'exit'消息,服务器和客户端都将断开连接。
这个示例代码展示了如何使用Python的`socket`模块创建一个简单的聊天服务器和客户端,并实现基本的消息发送和接收功能。在实际应用中,你可能需要添加更多的功能,比如用户认证、私聊、群聊、消息持久化等,并考虑使用更高级的套接字编程技术,如`asyncio`,以提高性能和扩展性。

