基于UDP通信的简单实现

一、UDP简介
UDP通信也叫作数据包通信,与我们熟知的TCP/IP相比,UDP通信是更加不可靠的。因为UDP通信在进行数据发送时,发送的一方只需要知道目标方在某个子网下的IP地址,便可以进行发送,发送后便完成了一次的发送操作,并不会关心是否接受方能否接受到这个数据包。

二、代码实现

实现通信需要编写UDP的发送端和接收端,也就是Client和Server。数据包的发送与接受需要通过一个DatagramSocket对象,发送端主要代码如下:
public void sendMsg(String msg) {
        Log.v("client  send: ", msg);
        try {
            count++;
            msg = count + msg;
            DatagramSocket socket = new DatagramSocket(0);
            //目标地址:
            InetAddress host = InetAddress.getByName("192.168.31.220");
            //指定包要发送的目的地
            byte[] data = msg.getBytes();
            DatagramPacket request =new DatagramPacket(data, data.length, host, 4001);//发送端口号为4001,可自行设置
            //发送
            socket.send(request);
            Log.v("client  send  ok ", msg);
        } catch (Exception ef) {
            ef.printStackTrace()

在具体操作中还需要注意:该发送函数需要在线程中调用,否则会报错。

接收端主要代码:
public void receiveMsg ()throws Exception{
        DatagramSocket socket = new DatagramSocket(4001); //接收端口号应与发送端口号保持一致
        byte[]  data=new byte[10];
        DatagramPacket request = new DatagramPacket(data, 10);
        while(true){
        socket.receive(request);
         ia=request.getAddress();//获取发送端的ip地址,供后续双向互通使用
        System.out.println("InetAddress "+ia.toString());              
        String s=new String(data);
        System.out.print(s);
        } 
    }

 

你可能感兴趣的:(基于UDP通信的简单实现)