Macを使ってるとportの5000と7000がAirPlayに使われてた
Cannot start service redis-cluster: Ports are not available: listen tcp 0.0.0.0:7000: bind: address already in use
仕事中に👆というエラーが出た。
あれ?何かローカルで立ち上げてたっけ?と思ってportを調べたら
$sudo lsof -P -i:7000 2104ms 水 5/18 17:44:32 2022
Password:
Sorry, try again.
Password:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
ControlCe 454 kenta.yoshida 14u IPv4 0x8224d2d97bdf1aed 0t0 TCP *:7000 (LISTEN)
ControlCe 454 kenta.yoshida 15u IPv6 0x8224d2d97f238cd5 0t0 TCP *:7000 (LISTEN)
:thinking_face: ????
ControlCe
ってなんぞ?
ってググったらこれが一番上にいて
MacをMontereyにアップデートしたらFlaskが5000番ポートで起動できなくなった - Sweet Escape
あっ…となった。
んで、これ
Why is Control Center on Monterey … | Apple Developer Forums
この記事によると airplayが5000と7000使ってるらしいけど、面白いコメントがあった
The Remote Audio Output Protocol, AKA AirTunes, AKA AirPlay, has been using port 5000 since the year 2004. This is nothing new. All AirPlay receivers including AirPort Express and Apple TV use port 5000. If you've ever used Airfoil on your Mac (Airfoil Speakers was released in 2008), that also uses 5000 for the same reason. AirPlay receiving is new to macOS Monterey, but AirPlay itself is very old, predating Flask and these other web development environments. No, Apple is not trying to make web development difficult.
昔(2004年頃)からMacのリモートオーディオ関連は5000番を使っていたらしくその名残らしい。flask(2010年)の開発前から使ってるからしゃーないってことらしい。
wikipediaでぱっと調べたら5000番を使ってるサービスはまぁまぁあるらしくUPnPやHerokuのconsole、Docker Registry等が使ってるらしい。大人気やねー。
List of TCP and UDP port numbers - Wikipedia
さらに面白いコメントを見つけた。
Funny thing just happened: I turned off AirPlay Receiver, started my service on port 5000, turned AirPlay Receiver back on, it is now happily listening on port 54842 in addition to port 7000 on which it was also listening before.
一回AirPlayをオフにして、5000番のサービスを立ち上げ、その後AirPlayを再度立ち上げるとportが変わってそれでも問題なく使えるらしい。
それでええんか…?
7000はなんでや?って調べてたけどあんまりぱっと説明されて無かった。
結論はAirPayは使ったこと一度もないのでOFFにして終わった。