Pythonソケットエラー48を修正



問題を排除するために楽器を試してください

ソケットエラー48は、プロセスがすでに使用されているポートに自分自身をバインドしようとしたときにトリガーされるPythonエラーです。



サーバー



「socket.error:[Errno 48]アドレスはすでに使用されています」エラーの原因は何ですか?

簡単な調査の結果、原因は次のとおりであることがわかりました。



  • ポートにバインドされたプロセス: サーバー上にプロセスが作成されると、インターネットとの通信にポートが使用されます。ポートは、一度に1人のゲストを楽しませることができるホストのようなものです。ただし、ポートを指定しない場合、サーバーはデフォルトのポートにポートを作成するだけです。次回プロセスを作成するときは、デフォルトのポートがすでに使用されているため、ポートを指定する必要があります。

解決策1:ポート番号を指定する

このエラーは主に、特定のプロセスをデフォルトポートにバインドしようとし、デフォルトポートがすでに別のプロセスにバインドされている場合にトリガーされます。したがって、このステップでは、プロセスがバインドされるポートを指定します。

  1. 次のコマンドを使用してプロセスを作成している可能性があります。
    $ python -m SimpleHTTPServer
  2. これの代わりに、このコマンドを使用してプロセスを作成します。
    $ python -m SimpleHTTPServer(ポート番号)
  3. プロセスが作成されるのを待ち、問題が解決するかどうかを確認します。

解決策2:ポートを解放する

の場合 がすでに別のプロセスで使用されている場合、新しいプロセスはそのポートで機能できなくなります。したがって、このステップでは、前のプロセスを終了してから新しいプロセスを実行することにより、ポートを解放します。そのために:

  1. 次のコマンドを使用して、特定のポートを使用するプロセスの数を一覧表示します。
    $ ps -fA | grep python
  2. コマンド引数は次のようになります。
    601 88234 12788 0 9:53 PM ttys000 0:00.16 python -m SimpleHTTPServer
  3. このうち、強制終了に使用するプロセスコードは「88234」です。
  4. 次のコマンドを使用して、プロセスを強制終了します。
    88234を殺す

    または、次のコマンドを使用して強制終了することもできます。



    sudo kill -9 PID
  5. これで、次のコマンドを使用して、プロセスをこのポートにバインドできます。
    $ python -m SimpleHTTPServer(ポート番号)
  6. これでプロセスが作成されます。

解決策3:Raspberry Piの再起動(Raspberry Piの場合のみ)

あなたはでこのエラーを取り除くことができます ラズベリーパイ Raspberry Piを再起動するか、ターミナルシェルを強制終了します。以前のプロセスがすでにポートで実行されているため、Raspberry Piがプロセスを自動的に強制終了できず、このエラーをトリガーすることがあります。

1分読む