03-20 21:35:54.234: WARN/System.err(1772): java.net.BindException: The socket level is invalid
03-20 21:35:54.264: WARN/System.err(1772):     at org.apache.harmony.luni.platform.OSNetworkSystem.socketBindImpl(Native Method)
03-20 21:35:54.294: WARN/System.err(1772):     at org.apache.harmony.luni.platform.OSNetworkSystem.bind(OSNetworkSystem.java:107)
03-20 21:35:54.324: WARN/System.err(1772):     at org.apache.harmony.luni.net.PlainDatagramSocketImpl.bind(PlainDatagramSocketImpl.java:120)我是在
DatagramSocket ds1 = new DatagramSocket();
int rtpport2=0
//判断port可用否
for(rtpport2 = 3469;rtpport2<=65535;rtpport2++){
try {
Socket s= new Socket("127.0.0.1",rtpport2);
s.close();
break;
} catch (IOException e) {
// TODO Auto-generated catch block
rtpport2++;
continue;
}
ds1.bind(new InetSocketAddress(rtpport2));

解决方案 »

  1.   

    大哥,UDP端口和TCP端口是互相独立的,你用TCP端口可用状态判断UDP端口是否可用.........
    而且,DatagramSocket ds1 = new DatagramSocket();构造的时候就已经绑定了一个系统给定的端口,不能重新绑定了!
    要测试是否可用:DatagramSocket ds1 = new DatagramSocket(rtpport2);
    如果没有抛出异常就表示可用,有异常再针对性处理下就OK了!!!
      

  2.   

    如果你只是要随便找个UDP端口:
    DatagramSocket ds1 = new DatagramSocket();
    这条语句已经搞定了!