UDP 網路程式設計 (1) --- Getting Started

在大部份的網路應用裡,TCP 似乎比 UDP 來的多許多,程式人員通常也是對撰寫 TCP 程式比較熟悉,這裡將整理一些 UDP
程式設計的說明,希望對大家有幫助。

一開始先介紹三個最重要的類別,如下:

  • DatagramPacket: UDP 的封包。

  • DatagramSocket: 用來建立 UDP socket 的類別,包含 client 及 server。

  • MulticastSocket: 用來建立群播 UDP socket 的類別,包含 client 和 server。

第一個程式,先寫個比較簡單的,只是點對點的 UDP 傳送,由 client 端送"Hello"這個訊息到 server 端,由 server
端將它顯示出來。


 1 package idv.steven;
2
3 import java.io.IOException;
4 import java.net.DatagramPacket;
5 import java.net.DatagramSocket;
6 import java.net.InetAddress;
7
8 public class UDPClient {
9 public void run() throws IOException {
10 InetAddress addr = InetAddress.getLocalHost();
11 String data = "Hello";
12 byte[] buffer = data.getBytes();
13 DatagramPacket packet = new DatagramPacket(buffer, buffer.length, addr, 12345);
14
15 DatagramSocket dgSocket = new DatagramSocket();
16 dgSocket.send(packet);
17 }
18
19 public static void main(String[] args) throws IOException {
20 new UDPClient().run();
21 }
22 }

上面的程式是 client 端程式,會將"Hello"的訊息送到本機端 port 12345 的 UDP server,DatagramPacket 是在
java.net.* 這個 package 中,所規範的 UDP 網路連線方式,要傳送的封包,封包中除了要傳送的內容外,也封存了要傳送的位址,產生好封包後,透過
DatagramSocket 送出。


 1 package idv.steven;
2
3 import java.io.IOException;
4 import java.net.DatagramPacket;
5 import java.net.DatagramSocket;
6
7 public class UDPServer {
8 public void run() throws IOException {
9 byte[] buffer = new byte[10];
10 DatagramPacket packet = new DatagramPacket(buffer, 10);
11 DatagramSocket dgSocket = new DatagramSocket(12345);
12 System.out.println("waiting ... (port: " + dgSocket.getLocalPort() +")");
13 dgSocket.receive(packet);
14 System.out.println("received, content below:");
15 for(int i = 0; i < buffer.length; i++) {
16 System.out.println(buffer[i]);
17 }
18 }
19
20 public static void main(String[] args) throws IOException {
21 new UDPServer().run();
22 }
23 }

Server 端的寫法也很簡單,同樣是使用 DatagramSocket 來產生 UDP 服務,建立這個類別時,指定要傾聽的 port 號後,呼叫
receive method,即可進行傾聽,程式在 block 在 receive method,以等待 client 端送來的訊息。當收到訊息時,訊息會被存入
DatagramPacket 中,第 15~17 行將收到的內容顯示出來,這裡顯示出來的是 ASCII 碼。測試時,先啟動 server,再啟動
client。

UDP 網路程式設計 (1) --- Getting Started,布布扣,bubuko.com

时间: 2024-12-26 18:44:44

UDP 網路程式設計 (1) --- Getting Started的相关文章

UDP 網路程式設計 (2) --- request / response

在 Oracle 網站上,有個簡單的 UDP 程式範例 --- Lesson: All About Datagrams,這個程式和前一個程式基本上是差不多的,差別在於,它是由 client 先送個 request 給 server 端,server 端接收到後,回應訊息給 client 端,下面是 Oracle 的範例程式. 1 package idv.steven; 2 3 import java.io.*; 4 import java.net.*; 5 import java.util.*;

UDP 網路程式設計 (3) --- 群播

繼續看 Oracle 的範例程式,在裡面舉出 UDP 最重要的運用 -- 群播,之前兩個範例程式測試的方式都是先執行 server,再執行 client,這個群播程式要反過來,先執行 client 以等待 server 廣播出來的訊息. 1 package idv.steven; 2 3 import java.io.IOException; 4 5 public class MulticastServer { 6 public static void main(String[] args) t

VR廣告設計與商業

<VR廣告設計與商業>培訓營 課程 By 高煥堂/台灣VR產業聯盟 主席  2016.11月 在Buy+購物的浪潮下,<VR廣告製作>也水漲船高,歡迎您一起來學習VR廣告製作技術. 進入無框世界 我們知道,傳統多媒體大多給觀眾圈定了一個"框",例如TV建構了一個有框世界,讓人們從框外觀看框裡的節目.而VR技術則打破了傳統螢幕的"框",引導人們進入螢幕的框內,給予一個完整的世界.在廣告方面,從"有框"到"無框&qu

NB實體連線到公司的網路,無法上網解決方案,需設 proxy。

未使用 VPN Cisco Anyconnect 已連線到公司的網路: google-chrome-stable --proxy-server="proxy.XXXcomm.com:3128" 未連線到公司的網路: google-chrome-stable 使用 VPN Cisco Anyconnect google-chrome-stable 為什麼實體連線要設 proxy 呢? 因為實體連線後,NB是屬於公司內部電腦的一份子,全部設定要依公司 為什麼 VPN 連線不需要設 prox

FPC Trace Pattern Layout Design Notices (軟板線路設計注意事項)

整理了一些軟板(FPCB/Flex Cable)製造廠關於線路設計的要求 (Design Guide)以避免應用上的品質問題. 1.Relationship between Through Hole, Land, Cover Film, and Cover Coat   Not Recommended(不建議) Recommended(建議)       通孔的焊墊必須用Cover film 覆蓋住,以避免使用時剝落.       2. Circuit Pattern Guidance    

[FPGA] DP83848網路晶片開發心得(1)

最近想要用FPGA來存取網路,於是想到之前買的一個DP88848晶片的網路版子,剛好拿出來研究研究. 查了一下規格它是使用RMII的傳輸介面可以達到10M/100M的速度,應該很夠用了吧. 那第一步就是先研究一下這電路要怎麼接?剛好有在網路找到其電路圖? 買了 一個洞洞板,接到DE0-Nano的GPIO_0,腳位如下: pin discrption GPIO_0[10]: MDC    GPIO_0[11]: MDIO GPIO_0[12]: CRS     GPIO_0[13]: OSCIN

通過數據了解用戶——數據在新品設計中的應用

通常情況下,我們可以通過用戶訪談的方法了解用戶需求,其實設計師還可以通過分析用戶問卷調查數據以及網站頁面數據等方式,了解用戶需求以及用戶在使用產品時遇到的問題. 而且,直接通過接觸用戶了解到的需求有可能只是個案,為了增強客觀性,通常都會通過大樣本調查,從數據實證的角度,進一步更準確和客觀地找到用戶的普遍需求. 此外,通過對數據分析結果與用戶訪談所得到的定性分析結論,進行比較和綜合分析,設計師也能夠從不同的角度了解用戶的真實需求. 從用研的角度來看,交互設計包括新產品設計以及已有產品的改版設計兩大

馬達控制、機器視覺及工業乙太網路交換器係工廠自動化不可或缺的三大環節

隨著亞洲人力雇用成本攀升,加上北美大力推行製造業回流政策,全球主要3C產品製造工廠以機器取代人工的需求已日益殷切,激勵歐美.日本和台灣工業設備大廠加緊研發機器手臂.機器人與產線自動化設備,因而帶動龐大的馬達控制.機器視覺和工業乙太網路解決方案導入需求. SoC FPGA整合可編程邏輯和多核CPU.DSP或軟核(Soft-core)MCU,兼具高速邏輯運算.即時控制與平行處理優點,可支援快速傅立葉轉換(FFT)等高階演算法,並縮減大量資料乘加運算的功耗.此外,其透過FPGA的軟體可編程特性,更有助

請推薦有關網路的書

转自:http://linux.vbird.org/linux_basic/0120howtolinux/0120howtolinux_1.php ----- Original Message ----- From: "網中人" Newsgroups: tw.bbs.comp.network Sent: Thursday, September 27, 2001 2:33 PM Subject: Re: 請推薦有關網路的書.... > > > "藍色的海&qu