linux 中TCP套接字编程实例 显示Bind() error:address already in use 怎么办 用netstat -nat 查看后结果

linux 中TCP套接字编程实例 显示Bind() error:address already in use 怎么办 用netstat -nat 查看后结果,第1张

你所使用的套接字已被占用,在Bind()之前你是否申请了套接字,或者申请之后已经被占用,Bind所使用的套接字来源很重要,可以查查。再有就是linux里面你的程序如果非法退出或者没有使用close释放套接字,在程序结束以后系统会延时自动释放套接字资源,但是要等几分钟,之后你就可以重新使用了。

Linux系统的TCP端口范围是可以修改的,适当的调整TCP端口范围以满足个人需求,那么具体要如何修改TCP端口范围呢?不妨通过实例来了解下吧。

在启动自定义服务的时候,希望使用8370端口,却发现端口已经被nginx或node占用了,无法启动。但是lvs又已经申请了,改端口的话比较麻烦。所以可以修改下

/proc/sys/net/ipv4/ip_local_port_range

参数,使tcp协议分配的端口从一个比较大的范围开始启用,这样,node或nginx就不会占用较小的端口了。

代码如下

echo ‘32768 61000’ 》 /proc/sys/net/ipv4/ip_local_port_range

补充:临时端口范围调整

你能使用netstat命令来显示有多少个连接进入这个状态:[若是生产环境下,最好先进行测试,然后考虑一个端口的合适范围]

代码如下

shell》netstat -n | grep TIME_WAIT

shell》cat /proc/sys/net/ipv4/ip_local_port_range

32768 61000

如果需要修改 echo “start-number

end-number”,start-number和end-number是0-65536端口号范围内的数,,0-1024最好不要用,通常是熟知端口,如果是专门的代理服务器的话,很多熟知端口没有使用,当然可以考虑!

不要忘记将echo命令加到系统启动脚本中,以使机器每一次重启后都生效


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/6251875.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-19
下一篇 2023-03-19

发表评论

登录后才能评论

评论列表(0条)

保存