首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java NIO:UDP Socket 通信實現

     編輯:Java 相關知識

UDP 客戶端(DatagramSocket + DatagramPacket)

public class UdpClient {
    public static void main(String[] args) {
        try (DatagramSocket datagramSocket = new DatagramSocket()) {
            InetAddress inetAddress = InetAddress.getByName("localhost");
            datagramSocket.connect(inetAddress, 8777);
            byte[] bytes = "this is first message".getBytes("UTF-8");
            DatagramPacket request = new DatagramPacket(bytes, bytes.length);
            byte[] bytes1 = "this is second message...........".getBytes("UTF-8");
            DatagramPacket response = new DatagramPacket(new byte[1024], 1024);
            datagramSocket.send(request);
            request.setData(bytes1);
            request.setLength(bytes1.length);
            datagramSocket.send(request);
            datagramSocket.receive(response);
            System.out.println(new String(response.getData(), 0, response.getLength(), "UTF-8"));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

UDP 服務端

public class UdpServer {
    public static void main(String[] args) {
        try (DatagramSocket datagramSocket = new DatagramSocket(8777)) {
            DatagramPacket request = new DatagramPacket(new byte[1024], 1024);
            while (true) {
                datagramSocket.receive(request);
                System.out.println(request.getLength());
                System.out.println(request.getSocketAddress());
                System.out.println(request.getAddress() + ":" + request.getPort());
                System.out.println(new String(request.getData(), 0, request.getLength(), "UTF-8"));
                byte[] bytes = "你好,我是服務器".getBytes("UTF-8");
                DatagramPacket response = new DatagramPacket(bytes, bytes.length, request.getAddress(), request.getPort());
                datagramSocket.send(response);
                // JDK 1.8 中無需重設 length,bufferLength 保證緩衝區大小
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved