最近做了一个关于udp的项目,分为移动端和服务器端,移动端用来给服务器发送数据同时接收服务器返回的数据,服务器当然是接收客户端数据了,然后返回一定的信息。期间遇到了很多问题,但最后还是解决了,所以想和他人分享一下下,希望可以帮到一些开发的朋友。
做这个项目时,在网上也是查了一些资料,发现很多朋友在客户端接收服务器返回数据时出了问题,发送几乎没有什么问题。
这些问题的发生从本质上讲,只要IP、port正确了,通信肯定不会有问题,也就是说是IP、或者port出了问题。
我发现udp的客户端和服务器通信本质上可以有两种形式:
1:客户端接收数据、发送数据使用同一个port,服务器接收到数据后,可以获取数据来源的IP、port,从而返回相应的数据(推荐这种方式)
2:客户端接收数据的port固定,服务器接收到客户端数据后,就向这个固定的port发送数据,这两种方式的服务器接收端口都是固定的。
好了,大约就是这个样子,由于第二种操作实在太容易理解,我直接附上第一种方式的核心代码:(如有不足,多多指教,接收到的数据是用handler进行回调的,过几天有空我还会附上demo的)
public DatagramSocket udpSocket;
/** * send udp */ public class BroadCastUdp extends Thread { private byte[] getData=null; public BroadCastUdp(byte[] data) { this.getData=data; } public void run() { DatagramPacket dataPacket = null; int count =0; try { udpSocket = new DatagramSocket(); dataPacket = new DatagramPacket(buffer, buffer.