UDP實驗課01

來源:互聯網
上載者:User

 實驗課上測試的源碼。

1)伺服器端

Code:
  1. import java.io.*;   
  2. import java.net.*;   
  3.   
  4. //伺服器端    
  5. public class UDPServerTest {   
  6.     static public void main(String args[]) {   
  7.         DatagramSocket receiveSocket = null;   
  8.         try {   
  9.             //DatagramSocket(int port):建立執行個體,並固定監聽Port連接埠的報文。通常用於服務端   
  10.             receiveSocket = new DatagramSocket(55511);   
  11.             byte buf[] = new byte[1000];   
  12.             //DatagramPacket(byte[] buf, int length):將資料包中Length長的資料裝進Buf數組,一般用來接收用戶端發送的資料。   
  13.             DatagramPacket receivePacket = new DatagramPacket(buf, buf.length);   
  14.             System.out.println("開始接受資料:");   
  15.             boolean flag = true; //作為接收完之後退出的標記   
  16.             while (flag) {   
  17.                 //接收資料報文到d中。receive方法產生一個“阻塞”。“阻塞”是一個專業名詞,它會產生一個內部迴圈,   
  18.                 //使程式暫停在這個地方,直到一個條件觸發。   
  19.                 receiveSocket.receive(receivePacket);   
  20.                 String name = receivePacket.getAddress().toString();   
  21.                 System.out.println("/n來自主機:" + name + "/n連接埠:"  
  22.                         + receivePacket.getPort());   
  23.                 //從執行個體中取得報文的Byte數組編碼   
  24.                 String s = new String(receivePacket.getData(), 0, receivePacket   
  25.                         .getLength());   
  26.                 System.out.println("接受到的資料是: " + s);   
  27.                 flag = false;   
  28.                 //需關閉串連,也關閉連接埠。       
  29.                 receiveSocket.close();   
  30.             }   
  31.         } catch (SocketException e) {   
  32.             receiveSocket.close();   
  33.             e.printStackTrace();   
  34.             System.exit(-1);   
  35.         } catch (IOException e) {   
  36.             receiveSocket.close();   
  37.             System.out.println("網路通訊出現錯誤,問題在" + e.toString());   
  38.         }   
  39.     }   
  40. }   

 

2)用戶端

Code:
  1. import java.io.*;   
  2. import java.net.*;   
  3.   
  4. //用戶端   
  5. public class UDPClientTest {   
  6.     public static void main(String args[]) {   
  7.         DatagramSocket sendSocket = null;   
  8.         try {   
  9.             //DatagramSocket():通常用於用戶端編程,它並沒有特定監聽的連接埠,僅僅使用一個臨時的。程式會讓作業系統分配一個可用的連接埠。   
  10.             // DatagramSocket(int port):建立執行個體,並固定監聽Port連接埠的報文。通常用於服務端   
  11.             sendSocket = new DatagramSocket();   
  12.             String string = "who  a u  沒死過,不知道dead的感覺";   
  13.             byte[] databyte = new byte[100];   
  14.             databyte = string.getBytes();   
  15.             //從Buf數組中,取出Length長的資料建立資料包對象,目標是clientAddress地址,clientPort連接埠,通常用來發送資料給用戶端。  此處事發送給伺服器端   
  16.             DatagramPacket sendPacket = new DatagramPacket(databyte,   
  17.                     databyte.length, InetAddress.getByName("222.17.97.152"),   
  18.                     55511);   
  19.             //發送報文sendPacket到目的地   
  20.             sendSocket.send(sendPacket);   
  21.             System.out.println("用戶端開始傳送資料!");   
  22.             sendSocket.close();   
  23.         } catch (SocketException e) {   
  24.             sendSocket.close();   
  25.             e.printStackTrace();   
  26.             System.out.println("不能開啟資料報Socket,或資料報Socket無法與指定連接埠串連!");   
  27.         } catch (IOException ioe) {   
  28.             sendSocket.close();   
  29.             System.out.println(ioe.toString());   
  30.         }   
  31.     }   
  32. }   

   總結:異常或正常退出時,最好調用close方法,否則可能造成資源無法收回。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.