socket通信 想做一个服务器做中转数据了 两个客户端进行互相通信
要实现两个客户端之间的互相通信,你可以创建一个服务器程序来中转数据。以下是一个使用Python的socket库实现的简单示例:
import socket
import threading
# 创建一个服务器套接字
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
# 绑定服务器地址和端口
server_address = ('localhost', 9999)
server_socket.bind(server_address)
# 监听客户端连接
server_socket.listen(2)
print('等待连接...')
clients = []
def handle_client(client_socket, client_address):
while True:
try:
# 接收客户端发送的数据
data = client_socket.recv(1024)
if not data:
break
# 将数据转发给另一个客户端
for client in clients:
if client != client_socket:
client.send(data)
except Exception as e:
print('发生错误:', e)
break
# 关闭客户端连接
client_socket.close()
print('客户端 {} 已断开连接'.format(client_address))
while True:
# 接受客户端连接
client_socket, client_address = server_socket.accept()
print('客户端 {} 已连接'.format(client_address))
# 将新连接的客户端加入客户端列表
clients.append(client_socket)
# 启动一个线程处理客户端
client_thread = threading.Thread(target=handle_client, args=(client_socket, client_address))
client_thread.start()
在这个示例中,创建了一个服务器套接字并绑定到地址和端口上。然后,使用listen()方法开始监听客户端连接。当有新的客户端连接时,将其加入到客户端列表中,并启动一个新的线程来处理该客户端。
在处理客户端的线程中,使用recv()方法接收客户端发送的数据,并将其转发给其他客户端。最后,当客户端断开连接时,关闭客户端套接字,并从客户端列表中移除该客户端。
你可以根据需要修改和扩展这个示例,以适应你的具体需求
原文地址: https://www.cveoy.top/t/topic/ihJC 著作权归作者所有。请勿转载和采集!