问题背景
我经常会使用Flask这个轻量级框架快速开发一些简单的服务端App,开发环境使用的操作系统为Mac OSX,由于Flask开发debug模式默认绑定(127.0.0.1:5000),app运行起来后,有时候经常访问不通。这件事有点闹心,但也没有放在心上。
某日在调试golang,golang默认绑定端口8080,偶尔有一次绑定5000,提示端口被占用。经过一番折腾,发现一篇帖子:Why is Control Center on Monterey … | Apple Developer Forums
AirePlay不仅会占用5000端口,也一并占用了7000端口。
╰─➤ netstat -anlt | grep 5000 1 ↵
tcp6 0 0 *.5000 *.* LISTEN
tcp4 0 0 *.5000 *.* LISTEN
╰─➤ netstat -anlt | grep 7000
tcp6 0 0 *.7000 *.* LISTEN
tcp4 0 0 *.7000 *.* LISTEN
解决方法
关闭Mac OSX的AirPlay功能,会释放5000和7000两个端口。步骤:系统偏好设置->共享,取消勾选隔空播放接收器。
遗留问题
为啥在AirPlay占用5000端口的前提下,运行Flask app不会提示端口占用?