Presentation is loading. Please wait.

Presentation is loading. Please wait.

2019/5/3 JAVA Socket(UDP).

Similar presentations


Presentation on theme: "2019/5/3 JAVA Socket(UDP)."— Presentation transcript:

1 2019/5/3 JAVA Socket(UDP)

2 TCP和UDP的比較 特徵/協定 連線導向(TCP) 非連線導向(UDP) 資料傳送服務的品質
2019/5/3 特徵/協定 連線導向(TCP) 非連線導向(UDP) 資料傳送服務的品質 保證遞送,有錯誤的檢查,保證資料到達的順序,提供流量控制與網路故障通知 資料有可能遺失.重複.延遲或是抵達順序錯誤 Socket程式的呼叫 等候連線與資料的接受是阻絕呼叫(Blocking Call) 資料的接收是阻絕呼叫(Blocking Call) 資料傳送的特徵 資料已連續的方式收送,沒有分隔,接收必須做後處理 資料已傳送所有的大小為單位,接收端可以直接當作獨立的訊息處理 連線成本 連線的成本高 連線的成本低 Blocking Call : 在程式執行中遇到Blocking Call,必須等到Blocking原 因,移除後才能繼續執行 TCP: UDP:

3 Port (通訊埠) 通訊協定通常是以port來區隔Internet各個應用 服務的. 通常有16bits代表 216=65536種
2019/5/3 通訊協定通常是以port來區隔Internet各個應用 服務的. 通常有16bits代表 216=65536種 編號1~1023是保留號(公認) 所以programming時要注意 可用範圍 : 1024~65535

4 各種協定的Port (通訊埠) 協定 Port number Transport 協定 DHCP
2019/5/3 協定 Port number Transport 協定 DHCP 67(server) / 68(client) UDP DNS 53 TCP/UDP FTP 21(control) / 20(data) TCP HTTP 80 SMTP 25 Telnet 23 POP3 110

5 Socket 2019/5/3 Socket步驟如下: 建立Client Socket,在建立時需指定欲連結 Server的主機名稱或IP位址與Internet服務的 port 傳送特定資訊或指令至Server 接收Server回傳的執行結果或錯誤訊息,並以特 定格式顯示,例如:HTTP通訊協定會HTML格式 顯示 當Client不需Server的處理時,便關閉Socket通 訊連結

6 Socket 2019/5/3 Application Socket API TCP UDP Network

7 Socket Socket在網路應用程式開發上,大致有下列兩大 類: Stream Socket
2019/5/3 Socket在網路應用程式開發上,大致有下列兩大 類: Stream Socket (Connection-Oriented Protocol)TCP Datagram Socket (connectionless Protocol)UDP

8 Socket API-- Server 所提供的Server端的API函式: Server BSD Socket 說明 socket
2019/5/3 所提供的Server端的API函式: Server BSD Socket 說明 socket 建立socket bind 設定socket所使用的local端IP位址與通訊埠 listen 設定socket等候(listen)Client端連結請求(connection request) accept 接受來自Client端的連結請求,並且建立socket連結 recv read (TCP)接收來自Client端所傳來的資料 recvfrom (UDP)接收來自Client端所傳來的資料 send write (TCP)傳送資料至Client端 sendto (UDP)傳送資料至Client端 closesocket 關閉通訊連結及socket,並且釋放系統資源 shutdown 關閉socket的傳送與接收的功能

9 Socket API-- Client 所提供的Client端的API函式: Client BSD Socket 說明 socket
2019/5/3 所提供的Client端的API函式: Client BSD Socket 說明 socket 建立socket connect 建立與Server端的socket連線 recv read (TCP)接收來自Server端所傳來的資料 recvfrom (UDP)接收來自Server端所傳來的資料 send write (TCP)傳送資料至Server端 sendto (UDP)傳送資料至Server端 closesocket 關閉通訊連結及socket,並且釋放系統資源 shutdown 關閉socket的傳送與接收的功能

10 UDP Socket Datagram Socket程式開發流程 Socket() Bind() Recvfrom()
2019/5/3 Datagram Socket程式開發流程 Socket() Bind() Closesocket() Sendto() Recvfrom() ( Blocking Call )

11 Java Socket API Java.net中支援Datagram Socket (UDP) 應用程式相關的API: Java API
2019/5/3 Java.net中支援Datagram Socket (UDP) 應用程式相關的API: Java API 說明 Java.net.DatagramSocket 建立Datagram socket Java.net.DatagramPacket 建立Datagram packet(資料封包) Receive (DatagramSocket) 接收Datagram packet(資料封包) Send (DatagramSocket) 傳送Datagram packet(資料封包) Close 關閉Datagram socket Java API :

12 JAVA UDP Socket Java Datagram Socket DatagramSocket DatagramPacket
2019/5/3 Java Datagram Socket DatagramSocket DatagramPacket Close send receive DatagramSocket DatagramPacket Close ( Blocking Call)

13 使用軟體工具--Eclipse 2019/5/3 網址 :

14 使用軟體工具--Eclipse 2019/5/3

15 使用軟體工具--Eclipse 2019/5/3

16 使用軟體工具--Eclipse 2019/5/3

17 使用軟體工具--Eclipse 2019/5/3

18 使用軟體工具--Eclipse 2019/5/3

19 使用軟體工具--Eclipse 2019/5/3

20 使用軟體工具--Eclipse 2019/5/3

21 使用軟體工具--Eclipse 2019/5/3

22 使用軟體工具--Eclipse 2019/5/3

23 使用軟體工具--Eclipse 2019/5/3

24 使用軟體工具--Eclipse 2019/5/3

25 使用軟體工具--Eclipse 2019/5/3

26 範例程式—UDP Server public class Server {
2019/5/3 public class Server { public static void main(String args[]) throws Exception byte buffer[]=new byte[10]; //buffer是10byte的陣列 String msg; int portNo=5555; //設port System.out.println("Server端開始接受連線請求!"); //print出的文字訊息 for (;;) { DatagramPacket packet = new DatagramPacket(buffer,buffer.length); //建立Datagram packet資料封包,限制packet值和長度大小 DatagramSocket socket=new DatagramSocket(portNo); //建立socket 需要設port socket.receive(packet); //接收封包 msg=new String(buffer,0,packet.getLength()); //將訊息轉為字串 System.out.println("收到下面的訊息 : " + msg); //print出的文字訊息 socket.close(); //關閉socket

27 範例程式—UDP Client 2019/5/3 public static void main(String args[]) throws Exception { int portNo =5555; //設port System.out.print("Please input the IP address of destination :"); //print出的文字訊息 BufferedReader uip= new BufferedReader(new InputStreamReader(System.in)); //輸入到buffer的字串存到UIP中,並讀出UIP中buffer的內容 String ServerIP=uip.readLine(); //將UIP內容讀到ServerIP InetAddress addr=InetAddress.getByName(ServerIP); //抓出ServerIP位址 while (true) { // 一直回傳新訊息 System.out.print("輸入送出的訊息 :"); String msg=uip.readLine(); //讀UIP中的訊息 int oLength=msg.length(); //將訊息長度大小放到oLength byte buffer[]=new byte[oLength]; buffer=msg.getBytes(); DatagramPacket packet= new DatagramPacket(buffer,oLength,addr,portNo); //訊息封包(值,大小,位址,port) DatagramSocket socket=new DatagramSocket(); //建立socket socket.send(packet); //送出packet封包訊息 socket.close(); //關閉socket

28 範例程式—執行結果 2019/5/3 UDP Server UDP Client


Download ppt "2019/5/3 JAVA Socket(UDP)."

Similar presentations


Ads by Google