记DatagramSocket绑定端口socket.bind()报错java.net.SocketException: already bound
这段时间写一个 UDP 访问接口获取数据的功能。当然先鄙视下对方,非要走Socket,MLGJB搞得难受的很, 而本地受防火墙限制,不能使用随机端口,必须固定端口来接收数据, 由于本司做的是政务项目, 所以不能贴出生产代码, 有测试代码模拟下,
代码如下
DatagramSocket socket = new DatagramSocket();
socket.bind(new InetSocketAddress(Integer.parseInt("4567")));
当这样创建Socket的时候,每次启动都报错:
Exception in thread "main" java.net.SocketException: already bound
at java.net.DatagramSocket.bind(DatagramSocket.java:376)
at dubbo.test.T2.main(T2.java:12)
即已经绑定端口错误,最开始分析以为是并发执行。前面的没有释放,后面进进去了。 查阅很多资料, 各种方法,colse。discount都测试过,一直报这个错,
后面不注意看到有人说 new的时候必须设置null,不然会自动绑定端口, 随即测试:
改之前逻辑:
改之后逻辑
完美结局,虽然问题很小,按时确实分析错方向,搞了很久,而且我看网上都没有对应的方案,所以记录下。方便后人查阅