wince apple在局域网中国发送udp丢包率几乎为0。性能相当出色。而在android上丢包率在10%左右。真是头痛。代码如下:
public UdpClientSocket() {
this.host = "255.255.255.255";//改成目标IP,而不用广播效果也不明显。
try {
ds = new DatagramSocket();
} catch (SocketException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// this.host=host;
}
public void send( byte[] bytes) {
DatagramPacket dp;
try {ds.setSendBufferSize(1);//这个加与不加效果不明显。
dp = new DatagramPacket(bytes, bytes.length,
InetAddress.getByName(this.host), 1024);
ds.send(dp);
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
是哪里做的不好,它要丢这么多包,我已在多个android上测试过,都有相同的问题。
------解决方案--------------------
UDP本身就不保证传输数据的完整性,就一次握手。楼主可以试试三次握手的TCP。
------解决方案--------------------
UDP确实不是很可靠,他是不保证通信的成功性的,就是传输速度比TCP快一些。你为什么不用TCP呢。