这是模拟器的问题,因为端口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 :/
}
}