我已经使用以下代码在 Python 中设置了一个套接字服务器(我在 Python 中的第一个程序):
class setupServer(threading.Thread):
def __init__(self, host, port):
threading.Thread.__init__(self)
self.host = host
self.port = port
def now(self):
d = datetime.datetime.now()
return d.strftime("%d/%m/%y %H:%M:%S")
def run(self):
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind((self.host, self.port))
server.setblocking(0)
server.listen(3)
inputs = [server]
print("Server started!")
while inputs:
readable, writeable, error = select.select(inputs,[],[])
for s in readable:
if s is server:
conn, addr = s.accept()
print('contact', addr, 'on', self.now())
conn.setblocking(0)
inputs.append(conn)
else:
data = s.recv(4096)
if data:
print("Received msg: ", data.decode())
else:
print('close')
inputs.remove(s)
s.close()
(请注意,除了打印和错误之外,我还没有完成处理接收到的数据)
客户端正在使用 AIR 套接字进行连接。在基于 Unix 的系统上,一切似乎都运行良好。我已经测试了从我的 Android 手机和 OSX 系统发送数据。
但是,在 Windows 客户端上,我可以连接,但我只在 AIR 连接到服务器后立即收到一些东西(它发送一个测试消息)。之后发送的所有内容都不会到达套接字服务器。
我也尝试使用 socket.settimeout 功能,但这给出了完全相同的问题。将AIR更改为Flash,不同的版本也没有什么区别。但考虑到一切都适用于 OSX 和 Android 的事实,我认为问题出在 Windows 上。
任何人都知道如何解决这个问题?(我在 AIR 客户端 PC 上使用 Windows 8。如果需要,我也可以发布 AIR 代码,但它非常基本,使用 writeUTFBytes() 发送消息)