启动两个UDP服务进程时遇OSError: [Errno 48]端口占用错误求助
关于UDP套接字绑定localhost不同端口报错的问题解答
首先明确:localhost完全可以同时绑定多个不同端口的套接字,你遇到的OSError: [Errno 48] Address already in use错误和localhost本身无关,大概率是以下几种情况导致的:
- 你设定的两个
server_port其实是同一个值:检查两段代码里的端口号是否真的不同,比如有没有不小心把两个进程的端口都硬编码成了同一个数字,或者变量赋值逻辑出错导致端口重复。 - 前一个进程的套接字未正常释放:如果第一个进程是异常退出的,系统可能会暂时保留端口的占用状态(即使UDP是无连接协议,部分系统在套接字未正常关闭时也会短暂占用端口)。你可以用命令排查:
- macOS/Linux:执行
lsof -i :[端口号]查看指定端口是否被其他进程占用 - Windows:执行
netstat -ano | findstr [端口号]查看端口的占用情况
- macOS/Linux:执行
- 代码中重复调用了
bind:比如同一个进程里不小心多次执行了绑定语句,或者脚本逻辑错误导致重复绑定同一端口。
最简单的验证方法是:手动给两个进程指定明确不同的端口,比如第一个绑定('localhost', 8000),第二个绑定('localhost', 8001),再重新测试,基本就能排除端口重复的问题。
内容的提问来源于stack exchange,提问作者coddd
相关产品推荐
相关产品推荐

