【雑学】Macでlocalの5000番ポートのサーバーをたてようとしたら出来なかったお話し....!

どーも!

たかぽんです!

今回は先程PythonのWebフレームワークであるFlaskでlocalにサーバーを立てようとしたんですが、うまくいかなかったので、それについて書いておこうと思います。

やりたかったこと

PythonのFlaskを使ってlocalにサーバーを立てようとしていたんですが、その際、ポート番号に5000番を指定するとうまく起動できないことがありました。

(base) taka@Taka BlockChain % python3 example.py -p 5000
OSError: [Errno 48] Address already in use

別にポート番号を5001等にしてしまえば問題ないんですが...

ただ、Flaskだと5000番が最初に通る道として示されていたので気になって調べてみました...!

解決策

まず占有しているpidを調べてみたところ、ControlCenterが何かしらをしているようでした。

(ControlCeまでしかでてないけど...w)

(base) taka@Taka BlockChain % sudo lsof -i:5000
COMMAND   PID USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
ControlCe 622 taka   22u  IPv4 0x47703b41f4073f99      0t0  TCP *:commplex-main (LISTEN)
ControlCe 622 taka   23u  IPv6 0x47703b4b8c62fee9      0t0  TCP *:commplex-main (LISTEN)

そのため、それで少しWebを漁ってみたら...以下の記事を見つけました。

どうやら、AppleのAirPlayのRecieverで5000番ポートを占有しているようですね。

筆者は直近でAirPlayを使う予定はないので、止めて解決しました。

方法は簡単で、

システム環境設定 > 共有 > AirPlayレシーバーのチェックを外す

でOKです。

筆者は加えて、先程調べたpidのプロセスをkillしたんですが、レシーバーのチェックを外すのみでも大丈夫(別途下記の記事参照)なようなので、前述のチェックを外した時点で一度サーバーを再起動してみてください。

それでも無理だよ!って方は加えて以下で先ほどのプロセスを削除すると解決するかもです...!

killall -p 622

まとめ

port周りとかはいつまで経ってもよくわからん部分とかあるので、一生おつきあいしていくことになりそうだなぁ...と。

でもこういったことを調べていける力はしっかりと確保しておきたいところですね...!

是非困っている方がいらっしゃればご参考にしてみてください...!

おすすめの記事