yoshikenがプログラミングや日記、ポエムを書いていくページです


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にして終わった。