1
我试图保持在23000监听UDP端口,应用程序在当地环境运行良好。 但切换到3G没有机会,流量被阻止。Android UDP入站流量
我试图所述载波信道的相同的端口上发送数据的4字节接收之前“开口”:
InetAddress serverAddr = InetAddress.getByName(SOULISSIP);
DatagramChannel channel = DatagramChannel.open();
socket = channel.socket();
//socket = new DatagramSocket();
socket.setReuseAddress(true);
//InetSocketAddress ia = new InetSocketAddress("localhost", SERVERPORT);
InetSocketAddress sa = new InetSocketAddress(SERVERPORT);
socket.bind(sa);
DatagramPacket holepunh = new DatagramPacket(new byte[]{0,1,2,3},4, serverAddr, SERVERPORT);
socket.send(holepunh);
// create a buffer to copy packet contents into
byte[] buf = new byte[200];
// create a packet to receive
DatagramPacket packet = new DatagramPacket(buf, buf.length);
Log.d("UDP", "***Waiting on packet!");
socket.setSoTimeout((int) opzioni.getDataServiceInterval());
// wait to receive the packet
socket.receive(packet);
UDPSoulissDecoder.decodevNet(packet);
socket.close();
是有简单的方法来打开通道和接收UDP数据报上端口23000?
究竟如何可能一个数据报被发送到Android设备,考虑到几乎所有的细胞提供者隐藏手机NAT网关后面,从而使设备从外界无法访问? –
所以我想其他应用程序,如Skype和GTalk使用所有第三个主机打洞? – Shine
是的。该设备将保持一个tcp连接对服务器开放。例如这就是推送电子邮件如何在电话上工作 - 有一个活动的tcp连接持有开放的客户端 - >服务器,所以服务器可以发送推送通知。 –