在Python中实现聊天程序,你可以使用`socket`模块来创建客户端和服务器端的通信。以下是一个简单的聊天程序示例,使用`socket`模块实现全双工通信,并添加了图形用户界面(GUI)来提升用户体验。
服务器端代码
import socketimport threadingdef handle_client(client_socket, addr):print(f"连接地址: {addr}")while True:try:message = client_socket.recv(1024).decode('utf-8')if message == 'bye' or message == '拜拜':breakprint(f"服务器收到消息: {message}")client_socket.send(message.encode('utf-8'))except:breakclient_socket.close()def main():server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)server.bind(('127.0.0.1', 5650))server.listen(5)print("服务器已启动")while True:client_socket, addr = server.accept()print(f"已连接到 {addr}")client_handler = threading.Thread(target=handle_client, args=(client_socket, addr))client_handler.start()if __name__ == "__main__":main()
客户端代码
import socketimport threadingimport tkinter as tkfrom tkinter import messageboxdef receive_messages(client_socket):while True:try:message = client_socket.recv(1024).decode('utf-8')if message == 'bye' or message == '拜拜':breakmessagebox.showinfo("聊天消息", message)except:breakdef main():client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)client.connect(('127.0.0.1', 5650))receive_thread = threading.Thread(target=receive_messages, args=(client,))receive_thread.start()while True:message = input("客户端: ")if message == 'bye' or message == '拜拜':breakclient.send(message.encode('utf-8'))if message == 'exit':breakclient.close()if __name__ == "__main__":main()
运行步骤
1. 首先运行服务器端代码,启动聊天服务器。
2. 然后运行客户端代码,启动聊天客户端。
3. 在客户端窗口中输入消息并发送,服务器端和客户端将交替显示接收到的消息。
4. 若要退出聊天,客户端输入“exit”,服务器端输入“拜拜”或“bye”。
这个示例代码展示了如何使用Python的`socket`模块创建一个简单的聊天程序,并通过多线程实现全双工通信。你可以在此基础上添加更多功能,如用户认证、私聊、群聊等。

