UDP传输的关键代码如下:
public class UdpHelper {
private int port = "12345";
public UdpHelper(int port) {
this.port = port;
}
//发送,确认和接收端是在同一网络下
public boolean sendByte(byte[] bytes) {
DatagramSocket ds = null;
try {
ds = new DatagramSocket();
if (bytes == null) return false;
DatagramPacket dp = new DatagramPacket(bytes, bytes.length, InetAddress.getByName("255.255.255.255"), port);
ds.send(dp);
ds.close();
return true;
} catch (SocketException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return false;
}
//接收,确认和发送端是在同一网络下
public byte[] getBytes() {
byte[] buf = new byte[1024];
DatagramSocket ds = null;
DatagramPacket dp = null;
try {
ds = new DatagramSocket(port);
dp = new DatagramPacket(buf, 1024);
ds.receive(dp);
} catch (SocketException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (ds != null) {
ds.close();
}
}
if (dp == null) return null;
final byte[] netBuf = new byte[dp.getLength()];
System.arraycopy(dp.getData(), dp.getOffset(), netBuf, 0, netBuf.length);
return netBuf;
}
}
前段时间要做一个基于UDP传输数据的apk,当时只弄了一天多,还没弄完就交接给同事弄其他的去了,所以界面特丑,也没什么其他的功能,就不上图了,有需要就去下载。APK除了实现了数据传输的功能,还用到了滑动退出SwipeBack及本地数据库litepal两个第三方架。
PS:UDP是不安全协议,数据可能会丢失,特别注意需要在同一网络下操作,开始不知道被坑了半天(我这连的是同一热点);进入APP后先点接收,点发送可以测试,UDP支持多方发送和接收。
下载地址: