1

TCP を使用してファイルを転送する Python アプリケーションを開発しており、Python 言語は初めてです。クライアント側のコードとサーバー側のコードは既にコード化されており、個別に実行すると機能します。残念ながら、それらをすべて同じファイルにまとめる必要がありました。サーバー側のコードとクライアント側のコードを実行する main.py。たとえば、すべてのネットワーク ノードは同時にサーバーおよびクライアントとして機能する必要があります。したがって、他のノードからの新しいリクエストを常にリッスンし(サーバー側のコードを実行する必要があります)、同時にサーバーとして機能する他のノードに新しいリクエストを送信する必要があります(この場合、クライアント)。スレッドを使用することを考えましたが、サーバー側コードのスレッドでスタックし続けました。

スレッドを処理する main.py コードの例を次に示します。

if __name__ == '__main__':
    serverThread_stop = Event()
    serverThread = Thread(target = TCPServer, args = (1111,'test.txt'))
    serverThread.start()
    serverThread.join()
    clientThread_stop = Event()
    clientThread = Thread(target = TCPClient, args = ('127.0.0.1',1111,'test.txt'))
    clientThread.start()
    clientThread.join()
    clientThread_stop.set()
    serverThread_stop.set()

私は Python とソケット プログラミングにまったく慣れていないので、スレッド化コードで間違いを犯した可能性があります。誰かがこの問題で私を助けることができますか? 前もって感謝します!

4

1 に答える 1

1

serverThread.join()2番目のスレッドを開始する前にすぐに呼び出します。

問題は、スレッドが終了するまでブロックを結合することです。

の呼び出しを移動するか、完全に削除しますjoin

于 2013-03-15T18:02:54.817 に答える