网站域名实名证明,友情链接发布网,wordpress会员登录界面美化,奏鸣网编写一个基于TCP/IP协议的简单聊天软件#xff0c;可以让多个客户端连接到服务器#xff0c;实现简单的文本消息收发功能。下面是一个基本的示例#xff0c;涵盖了服务器端和客户端的实现。
服务器端#xff08;chat_server.py#xff09; 服务器端负责接收客户端的连接可以让多个客户端连接到服务器实现简单的文本消息收发功能。下面是一个基本的示例涵盖了服务器端和客户端的实现。
服务器端chat_server.py 服务器端负责接收客户端的连接并转发消息给所有连接的客户端。
import socket
import threading# 服务器配置
SERVER_HOST 0.0.0.0 # 监听所有网络接口
SERVER_PORT 12345 # 端口号# 存储所有客户端连接
clients []def handle_client(client_socket, client_address):处理单个客户端的消息收发print(f[新连接] {client_address} 已连接.)clients.append(client_socket)while True:try:# 接收客户端消息message client_socket.recv(1024).decode(utf-8)if not message:breakprint(f[{client_address}] {message})# 广播消息给所有客户端for client in clients:if client ! client_socket:client.send(message.encode(utf-8))except Exception as e:print(f[异常] 客户端 {client_address} 连接断开.)clients.remove(client_socket)client_socket.close()breakdef main():# 创建TCP套接字server_socket socket.socket(socket.AF_INET, socket.SOCK_STREAM)server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)# 绑定和监听端口server_socket.bind((SERVER_HOST, SERVER_PORT))server_socket.listen(5)print(f[服务器] 正在监听端口 {SERVER_PORT}...)try:while True:# 接受客户端连接client_socket, client_address server_socket.accept()# 创建线程处理客户端消息client_thread threading.Thread(targethandle_client, args(client_socket, client_address))client_thread.start()except KeyboardInterrupt:print(\n[服务器] 服务器关闭.)server_socket.close()if __name__ __main__:main()客户端chat_client.py 客户端负责连接服务器并发送和接收消息。
import socket
import threading# 服务器配置
SERVER_HOST localhost # 服务器地址
SERVER_PORT 12345 # 服务器端口号def receive_messages(client_socket):接收消息的线程函数while True:try:# 接收服务器消息message client_socket.recv(1024).decode(utf-8)if message:print(message)except Exception as e:print([异常] 与服务器断开连接.)client_socket.close()breakdef main():# 创建TCP套接字client_socket socket.socket(socket.AF_INET, socket.SOCK_STREAM)try:# 连接服务器client_socket.connect((SERVER_HOST, SERVER_PORT))print(f[连接成功] 已连接到服务器 {SERVER_HOST}:{SERVER_PORT})# 启动接收消息的线程receive_thread threading.Thread(targetreceive_messages, args(client_socket,))receive_thread.start()# 发送消息while True:message input()if message.lower() exit:breakclient_socket.send(message.encode(utf-8))except Exception as e:print(f[异常] 无法连接到服务器 {SERVER_HOST}:{SERVER_PORT})finally:client_socket.close()if __name__ __main__:main()使用说明 运行服务器端 在命令行中执行 python chat_server.py启动服务器监听端口。
运行客户端 在另一个命令行窗口中执行 python chat_client.py连接到服务器。 聊天功能 客户端可以输入消息并按回车发送到服务器服务器会将消息广播给所有连接的客户端。 退出 客户端输入 exit 并按回车退出聊天。
注意事项 程序中使用了多线程来处理服务器和客户端的并发连接和消息收发。
这只是一个简单的示例没有加入身份验证、加密等安全性措施请根据实际需求添加。 在实际使用中需要考虑异常处理、网络稳定性等因素。