|
发表于 2021-3-22 08:41:45
|
显示全部楼层
用万能的Python自己写一个啊 很简单的 给你附上个基础示例 server.py运行在服务器端 client.py运行在客户端 实现的是服务器把接受到的任一客户端的数据转发到所有客户端 需要注意的是服务器端将socket绑定到本机IP和端口时 我这用的阿里云服务器 IP并不是填公网IP而是填主私网IP 客户端是填公网IP 如果使用的是某些服务器的话还要在安全组规则中把相应端口开放才行
代码仅为基础示例 看见这代码你就有实现的信心了 实际使用还需继续完善:比如改成非阻塞式的等等等
server.py如下
import socket
import threading
socket_list = []
ss = socket.socket()
# 本机IP和端口
ss.bind(('XXX.XX.XX.XX', 30000))
ss.listen()
def read_from_client(s):
try:
return s.recv(2048).decode('utf-8')
except:
socket_list.remove(s)
def server_target(s):
try:
while True:
content = read_from_client(s)
print(content)
if content is None:
break
for client_s in socket_list:
client_s.send(content.encode('utf-8'))
except e:
print(e.strerror)
while True:
s, addr = ss.accept()
socket_list.append(s)
threading.Thread(target=server_target, args=(s, )).start()
client.py如下
import socket
import threading
s = socket.socket()
s.connect(('XX.XX.XX.XX', 30000))
def read_from_server(s):
while True:
print(s.recv(2048).decode('utf-8'))
threading.Thread(target=read_from_server, args=(s, )).start()
while True:
line = input('')
if line is None or line == 'exit':
break
# 输入内容按回车发送
s.send(line.encode('utf-8'))
|
|