最近项目使用UDP通信,遇到了绑定异常的情况:
java.net.BindException: bind failed: EADDRINUSE (Address already in use)
之前做java网络编程的时候也遇到过,当时也没太细究,百度查了一下,果然还有其他方法避免重复绑定使用一个socket地址。
如下解决:
try {
/*
if (socket != null) { socket.close(); socket = null; }
socket = new DatagramSocket(8000);
*/
if(socket == null){
socket = new DatagramSocket(null);
socket.setReuseAddress(true);
socket.bind(new InetSocketAddress(8000));
}
}catch (SocketException se){
se.printStackTrace();
}