ソフトウェアまたはプロジェクトを実行すると、次の問題が発生します。
パニック: ブレードマスター: リッスン tcp: 0.0.0.0:8080: リッスン tcp 0.0.0.0:8080: バインド: アクセス許可によって禁止された方法でソケットにアクセスしようとしました。
Windowsシステム
最初のケース: 他のプログラムによって占有されている
1. まず、誰がポートを占有しているかを特定します。
1) Run を使用してcmdを開き、 netstat -ano と直接入力して Enter キーを押します。右端は PID=1328 に対応します。
注:ポートが多すぎて表示できないため、このコマンドの使用はお勧めしません。
2) [ファイル名を指定して実行] を使用してcmdを開き、次のコマンドを直接入力して Enter キーを押します。占有ポートに対応するPIDを確認してください。
netstat -aon | find "8080" または netstat -aon | grep "8080" # 8080 の単一ポートの占有率を表示します
************************************************* ************************************************* **
netstat -aon | findstr "80" または netstat -aon | findstr :80 # は、80 を含む一連のポート (例: 800,8080) を表示します。
2. PID に対応するプロセスを表示するには、tasklist|findstr "9880" と入力して、ポートを占有しているプロセスを表示します。
タスクリスト|findstr "9880"
上記のことから、「vmware-hostd.exe」プログラムがこのポートを占有していることがわかります。
1) プロセス番号に従ってプロセスを強制終了します。
taskkill -f -pid 9880 または taskkill /f /t /im vmware-hostd.exe
2) タスクマネージャーで対応するプロセスを見つけて、プロセスを直接終了します
ケース 2: システムによって予約ポートとしてリストされている
ポートが占有されているが、占有されているプロセスが見つからないことを示します。
その理由は、システムによって予約されている一連のポートに偶然含まれる一部のポートが Windows によって予約されるためです。
表示するには次のコマンドを使用します
netsh インターフェイス ipv4 showexcludedportrange プロトコル = tcp
Windows がこれらのポートを予約する考えられる理由は次のとおりです。
- ウイルス活動を検出したため Microsoft によってブロックされました
- Windows Update をインストールした後、予約ポートのリストが変更されました
- Hyper-V 機能を有効にする
解決策は 3 つあります。
- 別のポートに切り替える
- Hyper-V 機能をオフにします (オフにした後も占有されている可能性があります)。
- これらのポートを管理対象ポートの除外として設定します。
netsh int ipv4 addexcludedportrange プロトコル = tcp 開始ポート = 8000 ポート数 = 300
このコマンドを実行した後、再起動して予約ポートを再度クエリすると、ポート リストの最後に * が表示され、現時点ではこれらのポートが Hyper-V によって使用されていないことがわかります。
Linuxシステム
1. ポートの使用状況を表示する
netstat -tln //すべてチェック
netstat -tln | grep 80 //ポート 80 の使用状況のみをチェックします
netstat -aptn //現在のユーザーで開いているすべてのポート番号を表示します
netstat -nupl //システム内のudpプロトコルを使用してすべてのポート番号情報を表示します
netstat -ntpl //システムの tcp プロトコルを使用してポート番号情報を表示します
2. ポートがどのプログラムに属しているかを確認します。どのプロセスがポートを占有しているか
lsof -i :80
3. ポートを占有しているプロセスを強制終了します。
kill -9 プロセス ID