网络通信UDP之发送数据1

package Net.UDP;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;

/**
 * 使用UDP接受数据
 *   创建接受端socke对象
 *   接受数据
 *   解析数据
 *   释放资源
 *

 * */
public class ReceiveDemo {
    public static void main(String[] args) throws IOException {
        //                *   创建接受端socke对象
        DatagramSocket ds=new DatagramSocket(8888);
//                *   接受数据

        //DatagramPacket(byte[] buf, int length)
//        构造 DatagramPacket,用来接收长度为 length 的数据包。
        byte bys[]=new byte[1024];
        DatagramPacket dp=new DatagramPacket(bys,bys.length);
        ds.receive(dp);   //阻塞
//                *   解析数据

//        getAddress() 返回发送端的 IP 地址,
//        byte[] getData() 获取接受到的数据,也可以直接使用创建包对象时的数组
//        int getLength() 返回将要发送或接收到的数据的长度。

          InetAddress ia=dp.getAddress();
          byte data[]=dp.getData();
          int len=dp.getLength();
        System.out.println("who:"+ia+"+data:"+new String(data,0,len)+"+length:"+len);
        System.out.println("who:"+ia+"+data:"+new String(bys,0,len)+"+length:"+len);


//                *   释放资源
        ds.close();
    }
}

删除线格式

package Net.UDP;

import java.io.IOException;
import java.net.*;

/**
 * 使用UDP发送数据
 *   创建发生端socke对象
 *   创建数据并打包
 *   发送数据
 *   释放资源
 *
 *   DatagramSocket此类表示用来发送和接收数据报包 ,基于UDP
 *     DatagramSocket()
           创建Socket对象并随机分配端口号。

       DatagramSocket(int port)
           创建Socket对象并指定端口号
 。

 * */
public class SendDemo {
    public static void main(String[] args) throws IOException {
     //创建发生端socke对象
        DatagramSocket ds=new DatagramSocket();

//         *   创建数据并打包
        /**
         * DatagramPacket:此类表示数据包
         * 数据:字节流,byte[]
         *   设备的地址ip
         *   进程的地址:端口号
         *   DatagramPacket(byte[] buf, int length, InetAddress address, int port)
         构造数据报包,用来将长度为 length 的包发送到指定主机上的指定端口号。

         * */
        String s="hello";
        byte[] bys=s.getBytes();
        InetAddress address=InetAddress.getByName("DESKTOP-QG1LSJ2");
        DatagramPacket dp=new DatagramPacket(bys,bys.length,address,8888);


//    *   发送数据
        ds.send(dp);
//    *   释放资源
        ds.close();

    }
}

猜你喜欢

转载自blog.csdn.net/AFacetoj/article/details/88843317