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