最近在做的一个项目使用的是UDP传输,中间出现的问题我总结了一下。
1.报端口号被占用错误
Android DatagramSocket error message: EADDRINUSE (Address already in use)
这种情况我发现是我的发送数据的端口号和接收数据的端口号是同一个端口号的问题,
所以在设置端口号时尽量不要设置同一个端口号。
2.端口号被占用的时候,我尝试添加这些代码,发现不起作用,因为在端口号已经绑定的情况下,再解除绑定是不起作用的。
if (mySocket == null) {
mySocket = new DatagramSocket(myPort);
} else if (mySocket != null) {
mySocket = new DatagramSocket(null);
mySocket.setReuseAddress(true);
mySocket.bind(new InetSocketAddress(myPort));
}
后来,我在socket关闭后解除了绑定,
mySocket.close();
mySocket.setReuseAddress(true);
会报 java.net.SocketEx