java-UDP協議接收和發送數據


UDP發送數據的步驟:
  A:創建發送端的Socket服務對象

  B:創建數據,並把數據打包

  C:通過Socket對象的發送功能發送數據包

  D:釋放資源

public class SendDemo {
    public static void main(String[] args) throws IOException {
        //創建發送端的Socket服務對象
        //public DatagramSocket()
        DatagramSocket ds = new DatagramSocket();
        
        //創建數據,並把數據打包
        //public DatagramPacket(byte[] buf,int Length,InetAddress address,int port)
        //buf其實就是要發送的數據信息
        //length表示要發送的數據長度
        //address數據要發到哪里去,對應的哪個IP地址對象
        //port端口號
        //byte[] bys = "***".getBytes();
        //int length = bys.length;
        //InetAddress address = InetAddress.getByName("***.***.**.***");
        //int port = 10086;
        //DatagramPacket p = new DatagramPacket(bys,length,address,port);
        
        //封裝鍵盤錄入
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String line = null;
        while((line = br.readLine())!= null) {
            byte[] bys = line.getBytes();
            DatagramPacket dp = new DatagramPacket(bys, bys.length, InetAddress.getByName("000.000.00.000"), 10010);
            
            //通過Socket對象的發送功能發送數據包
            //public void send(DatagramPacket p)
            ds.send(dp);
        }
          
        //釋放資源
        ds.close();
    }
}

UDP接收數據的步驟:

  A:創建接收端的Socket服務對象

  B:創建一個數據包,用於接收數據

  C:接收數據

  D:解析數據,並顯示在控制台

  E:釋放資源

public class ReceiveDemo {
    public static void main(String[] args) throws IOException {
        //創建接收端的Socket服務對象,並且指定端口號
        DatagramSocket ds = new DatagramSocket(10010);
        while(true){
            //創建一個數據包,用於接收數據
            byte[] bys = new byte[1024];
            DatagramPacket dp = new DatagramPacket(bys, bys.length);
            
            //接收數據
            ds.receive(dp);
            
            //解析數據
            //獲取ip地址
            String ip = dp.getAddress().getHostAddress();
            
            //獲取數據
            String data = new String(dp.getData(),0,dp.getLength());
            System.out.println("from " + ip + " data is " + data);
        }
        
        //釋放資源(服務器一般永遠是開着的)
        //ds.close();
    }
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM