私はSocketServer
のドキュメントを見てきました。私はドキュメントからTCPサーバーコードをコピーして正常に動作します。私は問題を解決する方法に見えたSocketServer: '[Errno 98] Address already used in'を取り除く
socket.error: [Errno 98] Address already in use
:しかし、私はいつでも私の端末でプログラムのうち、CTRL-c'edことに気づいてから、もう一度それを実行しようとした、私は次のようなエラーになるだろうthisおよびthisを読んでください。私はアドレスの再利用を許可するようにしようとする自分のコードに次の行を追加しました:
server.allow_reuse_address = True
私はまだ上記の行を追加しさえして同じ問題を経験しています。私はtry
とexcept
を私のserver.serve_forever()
関数の周りに追加し、KeyboardInterrupt例外をキャッチし、アドレスが解放されることを期待してserver.shutdown()
とserver.socket.close()
を呼び出しました。ここで
if __name__ == "__main__":
HOST, PORT = '', 9999
# Create the server, binding to localhost on port 9999
server = SocketServer.TCPServer((HOST, PORT), MyTCPHandler)
server.allow_reuse_address = True
# Activate the server; this will keep running until you
# interrupt the program with Ctrl-C
try:
server.serve_forever()
except KeyboardInterrupt:
server.shutdown()
server.socket.close()
私はまだ上記のコードを実行し、エラーを取得してまで、分近く待たなければならないのです。(注:私はMyTCPHandlerクラスを除きます)アドレスは最終的に解放されます。これは、私がデバッグしてコードを絶えず変更している時に、イライラします。
私はこのコードを、Raspbian "Wheezy" 7.0を実行しているRaspberryPiでPython 2.7.3を使用して実行しています。
これはうまくいった。ありがとう! –