1

通信しているサーバーにはストリーム セッション スロットがあり、すべてのストリーム セッション スロットが使用されているため、ストリーム セッションを開くことができない場合があります。サーバーと通信するプログラムを構築していて、cntrl-c でストリームを強制停止すると、サーバー上のそのインスタンス接続用にストリーム セッション スロットを開いたままにして安全に閉じないと感じるためだと思われます。そのため、プログラムを何十回も終了すると、このエラーが発生します

cntrl-c がキーを押してメソッド close_conn(sock) を呼び出すのと同じくらいクリーンかどうかを知るための Python Networking に関する知識はあまりありませんが、試してみたいと思います。

これを端末で実行しているとします」

 ...
    print("Now listening from server for data...\n")
      while True:

        received = sock.recv(1024) 

        #pseudo_code
        if (user_input == "e") close_conn(sock) 

デバッグ目的で接続を安全に閉じるにはどうすればよいですか?

4

3 に答える 3

0

あなたが言ったのであなたが与えたコードを使用して

「やってみたい...given code...

. もうあと少しです。追加の行が必要です。下記参照。

...
print("Now listening from server for data...\n")
while True:

    received = sock.recv(1024)  

    # code
    if user_input == "e":
        break #breaks out of while loop and calls close_conn(sock)
close_conn(sock) 

あなたのコードから、 はclose_conn(sock)を呼び出す関数でありsock.close()user_inputは と等しい場合に"e"ループを中断してソケットを閉じる変数であると想定しています。

于 2016-11-02T15:51:38.333 に答える