Java / Android - 无法在初始化套接字(绑定)绑定失败:eaddrnotavail - 在模拟器中

时间:2014-02-16 07:37:59

标签: java android sockets

这是模拟器的问题,因为端口4442可以为操作系统保留,还是与我的代码有关?

错误看起来像http://prntscr.com/2sxqqs

我在清单

中加入了这一行
<uses-permission android:name="android.permission.INTERNET"/>

我正在onCreate方法中初始化我的套接字和InetAddress,但它们是在任何方法之外私有声明的。你知道,套接字仍然是null,端口是4442,并且按名称获取的inetaddress为http://prntscr.com/2sxr2s

我正在尝试通过Lan发送UDP数据包。如果您感兴趣,这就是容易出错的代码的样子:

private byte[] buf = new byte[1];

private DatagramPacket p;

private int port = 4442;
private InetAddress ip; 
private DatagramSocket s;


 try {//////INSIDE ONCREATE
            ip = InetAddress.getByName(Dataholder.ip);
        } catch (UnknownHostException e) {}

        try {
            s = new DatagramSocket(port , ip);
        } catch (SocketException e) {
            e.printStackTrace();
        }

private void sendPacket(int num){
     buf = Integer.toString(num).getBytes();
     p = new DatagramPacket(buf , buf.length, ip,port);  
     if(s !=null){
     try {
        s.send(p);
    } catch (IOException e) {
        Log.i(tag, e.getMessage());
    }
    }else{
        Log.i(tag, "s=null");//This one prints out :/
    }
 }

0 个答案:

没有答案