2

我已经使用以下代码在 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() 发送消息)

4

0 回答 0