写了个程序,发送UDP报文。真机地址192.168.191.2,无线网关地址192.168.191.1。在无线网关抓包。
现象是:发送报文到无线网关192.168.191.1,则可以通过抓包看到真机发送过来的UDP报文。
如果发送报文到192.168.1.1或者其他的公网IP地址,则抓不到真机发送过来的预期的UDP报文。抓报文应该不会出错的,就是抓真机发送过来的所有UDP报文。
真机在该网络环境下可以正常上网,看网页等。
求指点!问题到底出在哪儿啊?本人新写安卓网络程序,被这个问题折腾好久了。
关键源码如下:
public static void testsendudp(String host) {
try {
//首先创建一个DatagramSocket对象
DatagramSocket socket = new DatagramSocket();
socket.setSoTimeout(10);
//创建一个InetAddree
InetAddress serverAddress = InetAddress.getByName(host);
String str = "hello"; //这是要传输的数据
byte data [] = str.getBytes(); //把传输内容分解成字节
//创建一个DatagramPacket对象,并指定要将这个数据包发送到网络当中的哪个地址,以及端口号
DatagramPacket packet = new DatagramPacket(data,data.length,serverAddress,123);
//调用socket对象的send方法,发送数据
socket.send(packet);
Thread.sleep(1000);
socket.close();
}
catch (Exception e) {
//e.printStackTrace();
Log.i("SNTP", "exception:"+e.toString());
}
}
------解决方案--------------------
真机root过么?
另外,目标端口应该没限制啊。。。。
------解决方案--------------------
是可能被限制的。
------解决方案--------------------
这个,你的代码不就是发送嘛。。。。有撒问题啊?
------解决方案--------------------
真机root过么?
另外,目标端口应该没限制啊。。。。
真机root过了。但是这个确实不加权限就只看到发送到无线网关的报文。
这个,你的代码不就是发送嘛。。。。有撒问题啊?
你没有看仔细。我的代码是往几处地方发送报文。包括无线网关192.168.191.1,以及无线网关所在的局域网主机192.168.1.1,以及公网IP地址。但是,只看到发送到无线网关的报文,没看到发往其他两个地址的报文。加了权限就好了。
那,你是在哪里抓的包呢?手机上?