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萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章