1

さて、ソケットとネットワークを使ったいくつかの実験で、Unix 上で問題なく動作する非常に基本的なチャット クライアント/サーバーをセットアップしました。現在、win32 への変換でエラーが発生しています。はじめに、Windows の select.select() はソケット オブジェクトを受け入れず、ソケット オブジェクトではなくソケット番号を渡すことで一貫して補正されていることを理解しています (私はそう思います)。ただし、スクリプトはまだ select.select() 関数でハングしており、その理由はわかりません。スクリプトは、サーバーがメッセージを受信するまでのみハングします。その後、クライアントはメッセージを送信できますが、クライアントは何があってもサーバーからメッセージを受信できません。この 2 つのバグをできる限りトラブルシューティングしようとしていますが、私の調査は未解決のままです。これが問題のコードです、事前に感謝します。

while True:
    socket_list.append(s)
    read_sockets, write_sockets, error_sockets = select.select(socket_list, [], [], 20)
    if not (read_sockets or write_sockets or error_sockets):
        if afk == False:
            s.send('[Status]: '+str(_user)+' has gone afk.\n')
            sys.stdout.write('\n[+]: You have gone afk.\n')
            afk = True
            prompt()
    for sock in read_sockets:
        print ('Starting for sock in read_sockets') #DEBUG#
        if sock == s:
            print ('Getting here.') #DEBUG#
            data = sock.recv(4096)
            if not data:
                sys.stdout.write('[!]: Disconnected from chat server by server.\n'+W)
                choice = raw_input('[*]: Press Enter to continue.')
                _logic()
            else:
                sys.stdout.write(data)
        else:
            # Rest of the Program (Runs correctly) #
4

1 に答える 1