记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,不然会自动绑定端口, 随即测试:
改之前逻辑:
记DatagramSocket绑定端口socket.bind()报错java.net.SocketException: already bound_第1张图片

改之后逻辑

记DatagramSocket绑定端口socket.bind()报错java.net.SocketException: already bound_第2张图片

完美结局,虽然问题很小,按时确实分析错方向,搞了很久,而且我看网上都没有对应的方案,所以记录下。方便后人查阅

你可能感兴趣的:(记DatagramSocket绑定端口socket.bind()报错java.net.SocketException: already bound)