JAVA網路編程--UDP通訊

來源:互聯網
上載者:User

標籤:time   public   data-   記憶   隨機播放   ams   unknown   資訊   手機   

首先網路傳輸資料需瞭解例如以下三點

1、找到對方IP

2、資料要發送到對方指定的應用程式上,為了標識這些應用程式,所以給這些網路應用程式用數字進行了標識。為了方便稱呼這個數字,叫做port,邏輯port

3、  定義通訊規則。這個通訊規則稱為協議。


國際組織定義了通用協議TCP/IP。

127.0.0.1本機迴環地址 不易記憶,可用主機名稱 主機名稱:localhost

0-65535port範圍 0-1024系統使用或保留port 。當中mysql的port號為 3306

一、UDP

UDP相對於TCP來說是不可信任的

TCP在建立串連之前有3次握手,串連建立之後還有資料重傳機制來保證資料的穩定傳輸

而UDP並沒有握手機制和重傳機制。

簡單點說就是UDP通訊時僅僅管發,而無論對方收不收的到。


而TCP在每次通訊完畢後都要有一個包來確認是否收到。校正是否完善,否則就會重傳。

UDP

將資料及源和目的封裝成資料包中,不須要建立串連。每一個資料報的限制大小在64內,因無串連。是不可靠協議。

不須要建立串連,速度快。

TCP

建立串連,形成資料轉送的通道,在串連中進行大資料量傳輸,通過三向交握完畢串連。是可靠協議。必須建立串連。效率會稍低。

三向交握,(張三你在嗎?)(我在。)(好,我知道你在了。


以下是採用UDP發送方式的範例

(一)UDP發送端

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

思路:

1、  建立udpsocket服務

2、  提供資料,並將資料封裝到資料包中

3、  通過socket服務的發送功能。將資料包發送出去。

4、  關閉資源。

import java.io.IOException;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetAddress;import java.net.SocketException;import java.net.UnknownHostException;public class Work {public static void main(String[] args) throws IOException {//建立UDp服務,通過DatagramSocket對象,隨機播放資料連接埠進行發送DatagramSocket ds=new DatagramSocket();//確定資料。並封裝成資料包byte[] buf="dadfdadsfsafasdf".getBytes();DatagramPacket dp=new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.0.100"),1000);//通過socket服務。將已有的資料包發送出去,通過send方法ds.send(dp);//關閉資源ds.close();}}


(二)UDP接收端

定義udp的接收端

需求:

定義一個應用程式。用於接收UDP協議傳輸的資料並處理。

1、  定義udpSocket服務,一般會監聽一個port。

事實上就是給這個接收網路應用程式定義數位識別碼。方便於明白哪些資料過來應用程式能夠處理。

2、  定義一個資料包。由於要儲存接收到的位元組資料。

由於資料包對象中有很多其它功能能夠提前位元組資料中的不同資料資訊。

3、  通過socket服務的receive方法將收到的資料存入已定義好的資料包中

4、  通過資料包對象的特有功能。將這些不同的資料取出,列印在控制台上。

5、關閉資源

import java.io.IOException;import java.net.DatagramPacket;import java.net.DatagramSocket;public class ReData {public static void main(String[] args) throws IOException {DatagramSocket ds = new DatagramSocket(10000);byte[] arr = new byte[1024];DatagramPacket dp = new DatagramPacket(arr, arr.length);ds.receive(dp);/String ip = dp.getAddress().getHostAddress();String data = new String(dp.getData(), 0, dp.getLength());int port = dp.getPort();System.out.println(ip + ":" + data + ":" + port);ds.close();}}DatagramSocket ds = new DatagramSocket(10000);在while(true)迴圈運行該語句,就會出現連接埠已使用異常。

JAVA網路編程--UDP通訊

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.