天天看點

socket(一)

/*需求:通過UDP傳輸方式,将一段文字資料發送出去

  * 1.建立udpsocket服務

  * 2.提供資料,将資料封裝到資料包中

  * 3.通過socket服務的發送功能,将資料包發出去

  * 4.關閉資源

  * 

  */

 public class UPDsend {

    public static void main(String[] args) throws IOException {

//1.建立udp服務,通過DatagramSocket對象

  DatagramSocket ds=new DatagramSocket();

//2.提供資料,将資料封裝到資料包中

  byte[] buf="udpdata".getBytes();

  DatagramPacket dp=new DatagramPacket(buf,buf.length,InetAddress.getByName("ip"),10000);

  //3.通過socket服務的發送功能,将資料包發出去  

  ds.send(dp);

  //4.關閉資源

  ds.close();

 }
}
//*************************************************
 /*
  * 需求:定義一個應用程式,用于接收并處理資料的
  * 1.定義udpsocket服務,通常會監聽一個端口
  * 2.定義一個資料包,因為要存儲接收到的位元組資料
  * 3.通過socket服務的receive方法将收到的資料存入已定義好的資料包中
  * 4.通過資料包中對象的特有功能,将這些不同的資料取出,列印在控制台
  * 5.關閉資源
  */
 public class UDPreceive {
public static void main(String[] args) throws IOException {
//1.建立udp socket
DatagramSocket ds=new DatagramSocket(10000);//設定端口
//2.定義資料包,用于存儲資料
byte[] buf=new byte[1024];
DatagramPacket dp=new DatagramPacket(buf,buf.length);
//3.通過socket服務的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();

}
 }