1. ホーム
  2. スクリプト・コラム
  3. パイソン

[解決済み】socket.error: [Errno 48] アドレスはすでに使用中です。

2022-01-10 10:28:57

質問

Pythonでサーバを書きたいのですが、どうすればいいですか?

コマンドは以下の通りです。

python -m SimpleHTTPServer

実行すると、エラーが発生します。

socket.error: [Errno 48] Address already in use

以前、私のマシンの別の場所にある別のウェブサイトに対して、同じコマンドを使用して接続を開いたことがあります。

解決方法は?

デフォルトのポート(8000)にすでにプロセスがバインドされています。もし、以前に同じモジュールを実行したことがあるなら、そのプロセスがまだそのポートにバインドされている可能性が高いです。まず、他のプロセスを探してみてください。

$ ps -fA | grep python
  501 81651 12648   0  9:53PM ttys000    0:00.16 python -m SimpleHTTPServer

コマンドの引数が含まれているので、実行中のものを見分けることができます。 SimpleHTTPServer 複数の python プロセスがアクティブになります。をテストしたいかもしれません。 http://localhost:8000/ はローカルファイルのディレクトリリストを表示します。

2番目の数字はプロセス番号です。サーバーにシグナルを送ることでサーバーを停止します。

kill 81651

これは、標準的な SIGTERM シグナルを送る必要があるかもしれません。 SIGKILL ( kill -s KILL <pid> または kill -9 <pid> ) シグナルに置き換えます。参照 詳しくはWikipedia .

または、サーバーを 異なる を指定することで、代替ポートを使用することができます。

$ python -m SimpleHTTPServer 8910
Serving HTTP on 0.0.0.0 port 8910 ...

としてサーバにアクセスします。 http://localhost:8910 ここで 8910 には1024以上の任意の数字を指定できます。ただし、ポートが既に使用されていない場合に限ります。