java.net.BindException: bind failed: EADDRINUSE (Address already in use)

E/NMPWIFI ( 1189): java.net.BindException: bind failed: EADDRINUSE (Address already in use)
W/System.err( 1189): java.net.BindException: bind failed: EADDRINUSE (Address already in use)
W/System.err( 1189): at libcore.io.IoBridge.bind(IoBridge.java:89)
W/System.err( 1189): at java.net.PlainDatagramSocketImpl.bind(PlainDatagramSocketImpl.java:68)
W/System.err( 1189): at java.net.DatagramSocket.createSocket(DatagramSocket.java:133)
W/System.err( 1189): at java.net.DatagramSocket.<init>(DatagramSocket.java:78)
W/System.err( 1189): at com.nmp.nmpdmc.NMPWIFI$ReceiveUdp.run(NMPWIFI.java:276)
W/System.err( 1189): Caused by: libcore.io.ErrnoException: bind failed: EADDRINUSE (Address already in use)
W/System.err( 1189): at libcore.io.Posix.bind(Native Method)
W/System.err( 1189): at libcore.io.ForwardingOs.bind(ForwardingOs.java:39)
W/System.err( 1189): at libcore.io.IoBridge.bind(IoBridge.java:87)
W/System.err( 1189): ... 4 more

解决方法:
将:udpSocket = new DatagramSocket(DEFAULT_PORT );
改为:
if(udpSocket==null){
udpSocket = new DatagramSocket(null);
udpSocket.setReuseAddress(true);
udpSocket.bind(new InetSocketAddress(DEFAULT_PORT));
}

你可能感兴趣的:(android,UDP,EADDRINUSE)