网路编程-UDP-DatagramSocket、DatagramPacket

UDP是一个无连接协议,传输数据之前源端和终端不建立连接,当

   网路编程-UDP-DatagramSocket、DatagramPacket

UDP

它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上。在发送端,UDP传送数据的速度仅仅是受应用程序生成数据的速度、计算机的能力和传输带宽的限制;在接收端,UDP把每个消息段放在队列中,应用程序每次从队列中读一个消息段。

 

 

一个互相发送、接受的 简单程序:

(部分代码:具体请下载下面文件)

--------------发送程序部分代码------------

while (true) {
   String str = getInputStr();
   try {

    DatagramSocket ds = new DatagramSocket();
    DatagramPacket dp = new DatagramPacket(str.getBytes(), 0, str
      .getBytes().length, InetAddress
      .getByName("192.168.1.199"), 6000);
    ds.send(dp);

    ds.close();

   } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
   if ("quit".equals(str)) {
    System.out.println("本第一端发送退出。。。");
    break;
   }

  }

 

 

----接受程序部分代码-----------

while (true) {
    try {
     DatagramSocket ds = new DatagramSocket(3000);

     byte[] b = new byte[1024];
     DatagramPacket dp = new DatagramPacket(b, 1024);
     ds.receive(dp);
     String s = new String(dp.getData(), 0, dp.getLength());
     if ("quit".equals(s)) {
      System.out.println("第二端发送已退出..。");
      System.out.println("本第一端接收程序退出..");
      break;
     }
     String rece = s + "    From Receive --"
       + dp.getAddress().getHostAddress() + " : "
       + dp.getPort();
     System.out.println(rece);
     ds.close();
    } catch (Exception e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    }
   }

 

 

 

 

由于每个端都具有发送接受功能   所以要采用到线程。详细见下载资料中。

你可能感兴趣的:(编程,网络应用,网络协议)