我正在发布一个绑定到1200端口的应用程序来侦听UDP数据包。应用程序安装在~50台机器上,这些机器设置为在7:30 AM自动重启,并自动登录某个特定用户,当该用户登录时自动启动我的应用程序。
问题是在那天早上机器重新启动大约5台机器不会启动我的应用程序,因为我的应用程序失败了{1200}端口的java.net.SocketException: Already bound exception
。但是,当您登录到计算机并尝试手动启动应用程序时,它会毫无问题地启动。
这台机器上没有安装任何异常,一些vnc服务器,以及其他一些不应该使用此端口的应用程序。可以这样,当Windows正在启动时它会随机占用这个端口或类似的东西吗?因为我只是在重新启动机器时遇到这种情况,而不是当该用户注销而不是返回时(这会杀死并启动我的应用程序)。
我正在使用标准DatagramChannel
绑定到端口,没什么异国情调。
DatagramChannel channel = DatagramChannel.open();
channel.socket().bind(new InetSocketAddress(1200));
有问题的机器每天都不同,并不总是相同的。