1. 程式人生 > >網路程式設計之UDP傳輸

網路程式設計之UDP傳輸

1.DatagramSocket 和DatagramPacket 2.建立傳送端,接收端 3.建立資料包 4.呼叫Socket的傳送接收方法 5.關閉ocket 傳送端和接收端是兩個獨立的執行程式。

package myclass; import java.net.; / 需求:通過UDP傳輸方式,將一段文字資料傳送出去 思路: 1.建立updSocket服務 2.提供資料,並將資料封裝到資料包中。 3.通過socket服務傳送功能,將資料包發出去 4.關閉資源

*/

//傳送端 class UdpSend { public static void main(String[] args) throws Exception {

//1.建立Socket服務。通過DatagramSocket物件 DatagramSocket ds = new DatagramSocket(8888);

        //2.確定資料,並封裝成資料包。DataPacket(byte[] buf,int length,InetAddress adress,int port)
        byte[] buf = "udp ge men lai le".getBytes();
        DatagramPacket dp = 
                         new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.1.100"),10000);

        //3.通過Socket服務,將已有的資料包傳送出去,通過send方法
         ds.send(dp);

        //4.關閉資源
         ds.close();
 }

}

//接收端 /* 需求:定義一個應用程式,用於接收UDP傳輸的資料並處理的

思路: 1.定義udpsocket服務,通常都會監聽一個埠,其實就是給這個網路應用程式定義數字標識 方便應用處理。 2.定義一個數據包,因為要儲存接收到的位元組資料, 因為資料包中有更多的功能可以提取位元組資料中的不同資料資訊 3.通過socket服務的receive方法將受到的資料存入到已定好的資料包中 4.通過資料包物件的特有功能,將這些不同的資料取出,列印在控制檯 5.關閉資源 */

class UdpRece { public static void main(String[] args) throws Exception {

//1.建立udpsocket,建立端點 DatagramSocket ds = new DatagramSocket(10000);

        //2.定義資料包,用於儲存資料
        byte[] buf = new byte[1024];
        DatagramPacket dp = new DatagramPacket(buf,buf.length);

         //3.通過服務的receive方法將接收到的資料存入到資料包中
          ds.receive(dp);

        //4.通過資料包的方法獲取其中的資料
        String ip = dp.getAddress().getHostAddress();
        String data = new String(dp.getData(),0,dp.getLength());
        int port = dp.getPort();

        System.out.println(ip + "::" + data + "::" + port);

         //5.關閉資源
         ds.close();

  }

}