大家好,现在写了个简单的程序,想使用socket通过wifi发送数据,现在在OnCreate中创建了socket,
 代码如下:sck=new DatagramSocket(48392);
 我想在EditText中显示手机IP地址:ed..setText(sck.getLocalAddress().toString());模拟器中显示/0.0.0.0,手机中显示/::,请问是什么原因?是socket创建不成功吗?应该如何解决?  一个按钮事件发送数据:
    代码如下:
             byte[] data=ed.getText().toString().getBytes();
             pkg=new DatagramPacket(data,data.length,InetAddress.getByName("255.255.255.255"),48392);
         sck.setBroadcast(true);
             sck.send(pkg);    这段简单代码一直发送不出去,请教原因,谢谢大家!!

解决方案 »

  1.   

    sck=new DatagramSocket(48392); 相当于sck=new DatagramSocket("0.0.0.0", 48392); 
    未指定IP时或者IP为0.0.0.0时,套接字将被绑定到通配符地址,IP 地址由内核选择。
    所以,获得到0.0.0.0是正常的,手机上则会获取到/::也是正常的,通过sck.getLocalSocketAddress().toString()可以获得到端口号,如果有端口号就是成功了。
    你数据发不出去的原因,应该是你未指明接收端的IP地址,255.255.255.255这个是掩码地址,并不是IP地址。
    你要指定接收方的IP地址及端口号。
    new DatagramPacket(data,data.length,InetAddress.getByName("255.255.255.255"),48392);