最近几天一直在做android的与C#的UDP通信,但是在网上没有找到,只有TCP的,唉,伤心啊。。。。。

于是自己琢磨了几天,终于成功了。

其实,C#与java通信,只要两者都遵循协议就行了。

C#端向android端不停的发送8192个字节。

UdpClient udpClient=new UdpClient(6800);//设置监听端口

IPEndPoint remote = new IPEndPoint(IPAddress.Any, 0);// 用指定的地址和端口号初始化 IPEndPoint 类的新实例。

现在初始化基本上完成了,由于是要发给android端,android连上WIFI不知道IP地址,所以只要android发送一条消息给PC,那么remote就知道android的IP地址了。

所以Byte[]rece=udpClient.Receive(ref remote); //Receive会阻塞,只有收到消息后才会发送。

然后udpClient.Send(send,send.Length,remote);

这样就可以发送消息了。

android端:

InetAddress serverAddress=InetAddress.getByName("172.24.54.166");

DatagramSocket socket =new DatagramSocket();

DatagramPacket sendPacket=new DatagramPacket(bytesend, bytesend.length,serverAddress,6800);//用于发送,指定地址
DatagramPacket recePacket=new DatagramPacket(byterece,byterece.length);//用于接收

socket.send(sendPacket);//先发送一条信息

socket.receive(recePacket2);//开始接收

这样就可以完成C#与android UDP通信了。

现在存在的问题是:1.网络中断的话不能继续发送,这个我认为可以每隔几秒检测一下网络。

2.丢包严重,这个是UDP的特点,关于怎样减少丢包,自己去解决吧。