UDP--DatagramSocket

Java通过两个类DatagramSocket和DatagramPacket来支持Datagram socket。DatagramSocket实现了Datagram socket的基本功能,而DatagramPacket则提供了对包的一些支持。DatagramPacket表示存放数据的数据报,DatagramSocket表示接受或发送数据报的套接字
DatagramSocket的几个重要方法:
(1) DatagramSocket():随机绑定一个有效的端口;
(2) DatagramSocket(int port):绑定指定的端口;
(3)DatagramSocket(int aPort, InetAddress addr):绑定指定的端口和地址
(4) Void send(DatagramPacket p):发送数据报,由于目的地的地址信息已包含在数据报中,所以不需要在本函数中提供地址信息;
(5) synchronized void receive(DatagramPacket p):接收数据包,线程安全;
(6) synchronized void close():关闭socket;

DatagramPacket有以几个重要的方法:
(1) DatagramPacket(byte ibuf[], int ilength):用于接收数据报;
(2) DatagramPacket(byte ibuf[], int ilength, InetAddress iaddr, int iport):用于发送的数据报;
(3) byte[] getData();
(4) int getLength()
客户端发送数据代码:
InetAddress ia = InetAddress.getByName("127.0.0.1");
     byte[] bs = "请叫我将军".getBytes("UTF-8");
     DatagramPacket request = new DatagramPacket(bs, bs.length, ia, 8888);
     DatagramSocket socket = new DatagramSocket();
     socket.send(request);


服务器接收代码:
byte[] inbuf = new byte[256]; // 默认的数据缓冲大小
    DatagramSocket socket = new DatagramSocket(8888);
    // 等待数据
    DatagramPacket packet = new DatagramPacket(inbuf, inbuf.length);
    socket.receive(packet);
    int numBytesReceived = packet.getLength();
    System.out.println(new String(inbuf, 0, numBytesReceived, "UTF-8"));




发布了34 篇原创文章 · 获赞 6 · 访问量 3万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章