最近几天一直在做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的特点,关于怎样减少丢包,自己去解决吧。