No buffer space available windows 异常解决

Java 06-01 17:42

最近工作中需要使用java+netty编写一个硬件设备模拟工具,这个工具会模拟很多不同编号的设备云链接服务器,每个设备需要占用两个端口。在调试程序的时候发现最多只能模式1800个设备,然后就提示:java.net.SocketException: No buffer space available (maximum connections reached?): bind。 按一个系统有65535个端口来算,应该不会这么少的!怎么说最少也能链接个20000台了。

maximum connections reached 原因

经过查询分析原因后才知道,原来是因为端口不够,因为使用的是windows系统,先在cmd下查询端口启用情况,使用命令:netsh int ipv4 show dynamicportrange tcp 来查看。

结果显示:协议TCP动态端口范围
启动端口    : 49152
端口数      : 16384

maximum connections reached解决方法

以管理身份运行命令窗口,然后通过命令 netsh int ipv4 set dynamicport tcp start=2000 num=63000 修改端口数。

其中:
start为起始端口号
num为端口数量

最后完全解决问题。因为在协议里端口使用两个字节存储的,所以端口的最大数量为65536。所以,单台机器上运行的程序占用的端口数不能超过这个数量。

 

相关推荐