Microsoft PowerPoint - 17_JavaSocketProgramming.ppt

Similar documents
Microsoft Word - 投影片ch22

雲端 Cloud Computing 技術指南 運算 應用 平台與架構 10/04/15 11:55:46 INFO 10/04/15 11:55:53 INFO 10/04/15 11:55:56 INFO 10/04/15 11:56:05 INFO 10/04/15 11:56:07 INFO

Microsoft PowerPoint - 数据通信-ch1.ppt

(Methods) Client Server Microsoft Winsock Control VB 1 VB Microsoft Winsock Control 6.0 Microsoft Winsock Control 6.0 1(a). 2

C3_ppt.PDF

第 11 章 互聯網技術 11.1 互聯 網 和 萬 維 網 的 發 展 歷 史 A. 互聯網的發展 互聯網是由 ARPANET 開 始發展的 1969 年 美國國防部高級研究計劃署 (ARPA) 把部分軍事研究所和大 的電腦連接起來 建造了㆒個實驗性的電腦網絡 稱為 ARPANET 並 列 的功能

Fun Time (1) What happens in memory? 1 i n t i ; 2 s h o r t j ; 3 double k ; 4 char c = a ; 5 i = 3; j = 2; 6 k = i j ; H.-T. Lin (NTU CSIE) Referenc

JavaIO.PDF

untitled

1: public class MyOutputStream implements AutoCloseable { 3: public void close() throws IOException { 4: throw new IOException(); 5: } 6:

工程师培训

1.JasperReport ireport JasperReport ireport JDK JDK JDK JDK ant ant...6


IP505SM_manual_cn.doc

Chapter 9: Objects and Classes

EJB-Programming-4-cn.doc

UDP 8.2 TCP/IP OSI OSI 3 OSI TCP/IP IP TCP/IP TCP/IP Transport Control Protocol TCP User Datagram Protocol UDP TCP TCP/IP IP TCP TCP/IP TC

《大话设计模式》第一章

chp6.ppt

<4D F736F F F696E74202D20A1B6CFEEC4BFD2BB20B3F5CAB6BCC6CBE3BBFACDF8C2E7A1B7C8CECEF1C8FD20CAECCFA A1A24950D0ADD2E9BACD4950B5D8D6B72E707074>

ebook140-8

第 1 章 概 述 1.1 计 算 机 网 络 在 信 息 时 代 中 的 作 用 1.2 计 算 机 网 络 的 发 展 过 程 *1.2.1 分 组 交 换 的 产 生 *1.2.2 因 特 网 时 代 *1.2.3 关 于 因 特 网 的 标 准 化 工 作 计 算 机 网 络 在

Java java.lang.math Java Java.util.Random : ArithmeticException int zero = 0; try { int i= 72 / zero ; }catch (ArithmeticException e ) { // } 0,

W. Richard Stevens UNIX Sockets API echo Sockets TCP OOB IO C struct C/C++ UNIX fork() select(2)/poll(2)/epoll(4) IO IO CPU 100% libevent UNIX CPU IO

自由軟體教學平台


Chapter #

(TestFailure) JUnit Framework AssertionFailedError JUnit Composite TestSuite Test TestSuite run() run() JUnit

投影片 1

Swing-02.pdf

C6_ppt.PDF

Total Internet Connectivity in a Single Chip

FileMaker 16 ODBC 和 JDBC 指南

Data Server_new_.doc

11N 无线宽带路由器

無障礙網頁開發規範二版(草案)

RunPC2_.doc

Microsoft Word - DIR-615_B2_Manual_1.00_T_.doc

Microsoft PowerPoint - 01-ch01-4.ppt

Microsoft PowerPoint - CH05.ppt [相容模式]

untitled

内 容 简 介 本 书 是 一 本 关 于 语 言 程 序 设 计 的 教 材, 涵 盖 了 语 言 的 基 本 语 法 和 编 程 技 术, 其 中 包 含 了 作 者 对 语 言 多 年 开 发 经 验 的 总 结, 目 的 是 让 初 学 的 读 者 感 受 到 语 言 的 魅 力, 并 掌

<4D F736F F D20D2F8D0D043444D41CEDECFDFBDD3C8EB41544DBBFAC1AACDF8D3A6D3C3BDE2BEF6B7BDB0B82DD0DEB8C4B0E62E646F63>

Learning Java

IoC容器和Dependency Injection模式.doc

<4D F736F F F696E74202D FC2B2B3F85FA44AAB49B0BBB4FABB50B977A8BEA874B2CEC2B2A4B6BB50C0B3A5CE2E707074>

WebSphere Studio Application Developer IBM Portal Toolkit... 2/21 1. WebSphere Portal Portal WebSphere Application Server stopserver.bat -configfile..

FileMaker 15 ODBC 和 JDBC 指南

「電子檔案統一命名原則之研究」計畫

BPS6.0 Web服务集成和短流程功能使用手册

Microsoft PowerPoint - CH06.ppt [相容模式]

Java 1 Java String Date

untitled

Microsoft Word - YDB Vehicle Telematics Service Requirement and General Framework

(CIP) Web /,. :, ISBN X.W T P393.4 CIP (2004) Web ( ) ( / ) : * 787

untitled

epub 61-2

9 Internet 10 Internet


關於本書 l 3 PhoneGap Appcelerator Titanium Sencha Touch (wrapper framework) Native App PhoneGap Build Native App Hybrid App Java Objective-C Android SDK

宏电文档

TCP/IP TCP/IP OSI IP TCP IP IP TCP/IP TCP/IP

经华名家讲堂

untitled

D-link用户手册.doc

<4D F736F F D D352DBED6D3F2CDF8D7E9BDA8D3EBB9DCC0EDCFEEC4BFBDCCB3CCD5FDCEC42E646F63>

java2d-4.PDF

網路安全:理論與實務 第二版

3.1 num = 3 ch = 'C' 2

電機工程系認可證照清單 /7/1

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基

ebook140-9


目 彔 1. 准 备 工 作 登 彔 设 置 功 能 说 明 实 时 监 控 基 本 控 制 功 能 设 置 画 质 调 节 彔 像 与 抓 拍

VoIP Make a Rtp Call VoIP Abstract... 2 VoIP RTP...3 Socket IP...9 Config Two Voice-hub

10-2 SCJP SCJD 10.1 昇陽認證 Java 系統開發工程師 的認證程序 Java IT SCJD

用手機直接傳值不透過網頁連接, 來當作搖控器控制家電 ( 電視遙控器 ) 按下按鍵發送同時會回傳值來確定是否有送出 問題 :1. 應該是使用了太多 thread 導致在傳值上有問題 2. 一次按很多次按鈕沒辦法即時反應

<4D F736F F F696E74202D20332D322E432B2BC3E6CFF2B6D4CFF3B3CCD0F2C9E8BCC6A1AAD6D8D4D8A1A2BCCCB3D0A1A2B6E0CCACBACDBEDBBACF2E707074>

飞鱼星多WAN防火墙路由器用户手册

Simulator By SunLingxi 2003

<B1B1BEA9B9E2BBB7D0C2CDF8BFC6BCBCB9C9B7DDD3D0CFDEB9ABCBBEB4B43F3F12FB6CB293>

Transcription:

Java Socket Programming Bi-Ru Dai 大綱 Java 網路程式設計概念 活用 URL 使用 socket? 使用 datagram? Java Socket Programming 2 1

網路程式設計概念 Java 使網路程式設計變得很簡單 不必須要考慮底層網路資料溝通的問題 Ex: 網頁中使用 Applet 來顯示圖片 Java Socket Programming 3 IP 基礎網路架構 Java Socket Programming 4 2

所需要了解課題 設計應用層的程式 當然也需要了解 TCP/UDP 運作原理 使用 java.net 類別 Java Socket Programming 5 TCP Transmission Control Protocol 兩個應用程式建立一個通道, 互相傳送訊息 Ex: 如同打電話一般 依據網路特性可分成 Packet switch Circuit switch Java Socket Programming 6 3

TCP 在網路上, 把資料依照順序地彼此傳遞是一件困難的事 提供可靠的點對點的連線方式 (Point to Point Channel) 需要可靠連線方式的應用 Ex:HTTP,FTP,TELNET Java Socket Programming 7 UDP User datagram Protocol 傳送分別獨立的封包資料, 不保證資料是否送到, 跟 TCP 的理念不同 提供不保證能把資料正確地在應用程式間傳輸 並不是 Connection-Based;TCP 是 Connection-Based Java Socket Programming 8 4

UDP 資料先被分成許多個小部份, 傳輸出去. 其被傳出去被收到的順序不重要 對許多的應用程式而言, 使很難去保證資料在網路上傳輸會沒有任何的流失 因此, 為使資料沒有傳送上的錯誤而使用可以確保資料傳輸品質的通訊協定, 反而會使網路的品質變壞影響到原有應用程式或網路服務的服務品質 Java Socket Programming 9 UDP 適合一些應用程式可以容許再網路上傳送上流失一些資料, 一則是丟棄他或是利用其他成功傳遞成功的資料來組成 應用範例 : 時間服務伺服器 (Time server) Ping service 用來了解網路連線的狀態 Java Socket Programming 10 5

了解連接阜 (Port) 一般來說, 電腦一般都具有一個實體連線的介面, 所有的資料都是解由這一個連線來傳輸 然而, 這些傳輸的資料都是給不同的應用程式, 如何來分別他們呢? 使用連接阜來區別 Java Socket Programming 11 連接阜 網路資料的傳輸一定伴隨著目的地的電腦位置與連接阜資料 電腦位址 :IPv4,32bit 連接阜 :16bit 這樣一來,TCP/UDP 就可以很順利的傳輸資料 Java Socket Programming 12 6

以 TCP 為例 伺服器將 IP 與 Port 合併一起, 好讓客戶端可以知道如何與伺服器相連接 Java Socket Programming 13 以 UDP 為例 資料裡面只有包含目的地的 IP 與 Port 資料 根據 Port 資料來區別不同的應用程式 Java Socket Programming 14 7

使用 Port 所有可以使用的 Port : 0~65535 0~1023 常用的網路服務 使用者制定的服務 1024~65535 Java Socket Programming 15 Java 提供的程式庫 java.net TCP URL, URLConnection, Socket, and ServerSocket UDP DatagramPacket, DatagramSocket, and MulticastSocket Java Socket Programming 16 8

活用 URL 什麼是 URL? 建立 URL 解析 URL 讀取 URL 的目錄 URL 連線 URL 連線的讀取與輸出 Java Socket Programming 17 什麼是 URL? Uniform Resource Locator 是用來識別網路上的電腦 Ex: http://java.sun.com http: 傳輸協定 java.sun.com 資源名稱 Java Socket Programming 18 9

URL Host Name The name of the machine on which the resource lives. Filename The pathname to the file on the machine. Port Number The port number to which to connect (typically optional). Reference A reference to a named anchor within a resource that usually identifies a specific location within a file (typically optional Java Socket Programming 19 建立 URL 使用字串來表示 URL http://www.ntu.edu.tw URL ntu=new URL(http://www.ntu.edu.tw) 除了使用絕對的 URL 也可以使用相對的 URL Java Socket Programming 20 10

相對 URL 通常被使用在網頁中所連結到通一個網站網頁的連結 Example In a page contains the following pages in the same site: <a href="picturesofme.html">pictures of Me</a> <a href="mykids.html">pictures of My Kids</a> Using relative URL to represent: URL gamelan = new URL("http://www.gamelan.com/pages/"); URL gamelangames = new URL(gamelan, "Gamelan.game.html"); URL gamelannetwork = new URL(gamelan, "Gamelan.net.html"); Java Socket Programming 21 URL 語法 語法 : URL(URL baseurl, String relativeurl) Ex: URL gamelannetworkbottom = new URL(gamelanNetwork, "#BOTTOM"); Java Socket Programming 22 11

解析 URL getprotocol Returns the protocol identifier component of the URL. gethost Returns the host name component of the URL. getport Returns the port number component of the URL. The getport method returns an integer that is the port number. If the port is not set, getport returns -1. getfile Returns the filename component of the URL. getref Returns the reference component of the URL. Java Socket Programming 23 Example 100. import java.net.*; 101. import java.io.*; 102. public class ParseURL { 103. public static void main(string[] args) throws Exception { 104. URL aurl = new URL("http://java.sun.com:80/docs/books/" 105. + "tutorial/index.html#downloading"); 106. System.out.println("protocol = " + aurl.getprotocol()); 107. System.out.println("host = " + aurl.gethost()); 108. System.out.println("filename = " + aurl.getfile()); 109. System.out.println("port = " + aurl.getport()); 110. System.out.println("ref = " + aurl.getref()); 111. } 112. } Java Socket Programming 24 12

讀取 URL 資料 100. import java.net.*; 101. import java.io.*; 102. public class URLReader { 103. public static void main(string[] args) throws Exception { 104. URL yahoo = new URL("http://www.yahoo.com/"); 105. BufferedReader in = new BufferedReader( 106. new InputStreamReader( 107. yahoo.openstream())); 108. String inputline; 109. while ((inputline = in.readline())!= null) 110. System.out.println(inputLine); 111. in.close(); 112. } 113. } Java Socket Programming 25 URL 連線錯誤處理 100. try { 101. URL yahoo = new URL("http://www.yahoo.com/"); 102. URLConnection yahooconnection = yahoo.openconnection(); 103. } catch (MalformedURLException e) { // new URL() failed 104.... 105. } catch (IOException e) { // openconnection() failed 106.... 107. } Java Socket Programming 26 13

URL 連線的讀取與輸出 讀取 URLConnectionRead.java 輸出 Reverse.java Java Socket Programming 27 使用 socket? 在網路上兩個程式雙向連線的一端 利用 socket 從 client 連線到 server 與讀取 server 的資料 詳細介紹使用 java 在 client-server 架構下的連線模式 Java Socket Programming 28 14

關於 sockets URL 與 URLConnection 提供相對較高階機制在網路上存取資源 有時候, 需要較低階網路連線的溝通 舉例來說, 撰寫一個 client-server 應用程式 Java Socket Programming 29 Client-server 應用程式 Server 提供某些服務, 像是處理資料庫的查詢或是傳送現在的股價 Client 使用這些 server 提供的資訊, 不論是顯示查詢資料庫的結果或是提供投資者購買股票的建議 Java Socket Programming 30 15

Client-server 應用程式 建置在 TCP 上面 TCP 提供穩定點對點連線的通道 透過 TCP,client 與 server 需要建立彼此的連線 需要用 socket 將每一個程式與其另一連線端結合起來 在這個連線下,client 與 server 可以換傳資料 Java Socket Programming 31 Socket 連線方式 正常來說,server 會在特定 port 上設定一個包含這一個 port 資訊的 socket 接著,server 就等待, 聆聽要連線到這一個 socket 的 client 在 client 端,client 需要知道主機名稱 (hostname) 與其提供連線的 port Java Socket Programming 32 16

Client 需要連線到 server 時 當需要連線時,Client 會試著與這一個主機及其 port 連線 Java Socket Programming 33 Server 接受 client 連線 如果沒任何問題,server 會接受連線 Server 產生新的且包含不同 port 的 socket 因為需要保留原有 socket 來接收新的連線與維持已連線的資料傳輸品質 Java Socket Programming 34 17

連線完成 在 client 端會接收到連線被確認的訊息, 以確認 socket 連線建立完成, 可以透過這一個 socket 來傳遞資料 Client 端的 socket 並不會包含與 server 連線的相同 port 號碼. 然而,client 會另外指定一個 port 給 client 執行的程式用 Java Socket Programming 35 Socket in Java java.net.socket 建置在平台相關實作上的最上層, 隱藏所有系統細節 所以利用 java.net.socket 所建置網路程式可以做到跨平台的特性 java.net.serversocket 提供建置伺服器的 socket Java Socket Programming 36 18

Socket 讀取 Echo Service uses port 7 Echo client Client 與 server 建立連線後,client 送給 server 字串訊息,server 都回傳相同的訊息給 client 顯示出來 Java Socket Programming 37 KnockKnock Service Server KnockKnockServer.java KnockKnockProtocol.java Client KnockKnockClient.java Java Socket Programming 38 19

支援多人同時連線的 KKserver KKMultiServer KKMultiServerThread Java Socket Programming 39 使用 datagram 什麼是 datagram Datagram client-server 架構 廣播給許多的接收者 Java Socket Programming 40 20

什麼是 datagram 是一個獨立, 且包含所要傳送資料的電腦資料格式 並不保證會到達, 到達時間與傳遞內容 應用程式透過 datagram 傳遞與接收資料是完全獨立且沒有關係的 Client 與 server 並不需要透過連線來傳送資料 Java Socket Programming 41 UDP 與 TCP 比較 TCP:client 與 server 建立穩定的點對點連線, 在上面傳遞資料. 需要 建立連線, 互傳資料 與 結束連線 三個主要步驟. 資料傳送是保證的. UDP:client 與 server 不需要建立連線, 傳送資料與接收資料是不相關的. 資料傳送是不保證的. Java Socket Programming 42 21

Quote 範例 java.net 的 DatagramSocket QuoteClient 送空的資料給 QuoteServer QuoteServer 就回傳資料給 QuoteClientClient 類似 ping 的功能 Java Socket Programming 43 Quote 範例 Server listens on port 4445 QuoteServer.java QuoteServerThread.java Client QuoteClient.java QuoteClientApplet.java QUoteClientApplet.html Java Socket Programming 44 22

廣播訊息給多個接收者 與之前範例不同,server 等待 client. 多個 Client 聆聽 server 送出的訊息 修改 DatagramSocket Server 固定一個時間會送出訊息給 client Java Socket Programming 45 Quote Multicast 範例 Multicast Server MultiCastServer.java MultiCastThread.java Multicast Client MultiClient.java Java Socket Programming 46 23

Reference Custom Networking (http://java.sun.com/docs/books/ tutorial/networking/toc.html) IETF (http://www.ietf.org/) Java Socket Programming 47 24