版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、深入Java編程,專業(yè)教程,理論講解部分,Ver3.1,第049課 網(wǎng)絡編程,概述:,網(wǎng)絡程序設(shè)計概述 Socket網(wǎng)絡程序設(shè)計,重點:,難點:,Socket網(wǎng)絡程序設(shè)計,Socket網(wǎng)絡程序設(shè)計,1 java網(wǎng)絡編程概述,第049課 網(wǎng)絡編程,在java中對網(wǎng)絡的操作就像對文件操作一樣方便.,可以使用多線程來實現(xiàn)同時對多個網(wǎng)絡連接進行處理,1.1 計算機的識別,在你想要連接到另外一臺計算機上的時候,一定要使用某種方法來確定在網(wǎng)絡上的你要連接的計算機.,第049課 網(wǎng)絡編程,第一種就是我們常見的DNS.這是一種用單詞組成得地址.我們經(jīng)常訪問網(wǎng)站使用得就是DNS地址.例如,第二種就是用點”.”分
2、隔開得4組數(shù)字組成得地址.例如:,這里要介紹的就是已經(jīng)成熟的IP地址.IP地址有兩種表達格式:,1 java網(wǎng)絡編程概述,第049課 網(wǎng)絡編程,無論什么格式,IP地址內(nèi)部的表示都是一個32位得數(shù)字,所以在用數(shù)字表示得方式下每一個區(qū)域都不能超過255.,在java中可以使用InetAddress類來創(chuàng)建一個特殊得對象來保存這個地址.馬上你將看到可以利用這個地址對象來創(chuàng)建一個socket.,1.1 計算機的識別,1 java網(wǎng)絡編程概述,第049課 網(wǎng)絡編程,1.2 服務器與客戶端,網(wǎng)絡連接不過就是兩臺計算機之間進行連接并且相互發(fā)送消息.一旦兩臺計算機發(fā)現(xiàn)了對方,那么就可以建立一
3、個雙向得連接.,這就好像是兩個人在游樂園走散了一樣,他們?nèi)绾握业綄Ψ?一臺計算機站在那里原地不動,仔細得聽著,另外一臺計算機大聲喊道:”你在哪啊?!”,1 java網(wǎng)絡編程概述,第049課 網(wǎng)絡編程,那個站在原地不動得計算機稱作服務器,另外一個稱作客戶端.,服務器得任務就是負責監(jiān)聽連接,客戶端得任務就是嘗試去連接到服務器.,它們得區(qū)別僅僅是在相互尋找得過程中.一旦它們建立了雙向連接,那么誰是服務器誰是客戶端就無所謂了.,1.2 服務器與客戶端,1 java網(wǎng)絡編程概述,第049課 網(wǎng)絡編程,IP地址創(chuàng)建了一個特殊得地址被稱作本地地址(localhost)用來做沒有網(wǎng)絡資源得測試.在java中通
4、常使用如下方法獲得這個地址:,如果你將參數(shù)置null,那么它將返回一個本地地址.這個地址只能用在這個特殊得環(huán)境下,所以在你打算使用在網(wǎng)絡上時需要對這個地址進行處理.,InetAddress addr = InetAddress.getByName(null);,1.2 服務器與客戶端,1 java網(wǎng)絡編程概述,第049課 網(wǎng)絡編程,1.3 端口,一個IP地址不能夠準確得確定一個服務,因為在一臺服務器上會同時有很多得服務存在.,端口不是一個物理設(shè)備,只是一個軟件上對服務得一個標識. 在服務器上每一個端口代表唯一個服務,客戶端應該在連接之前知道這個端口.,系統(tǒng)將1-1024作為保留端口,以提供系統(tǒng)
5、服務.所以你應該使用其它的端口.,1 java網(wǎng)絡編程概述,2 Sockets,第049課 網(wǎng)絡編程,Socket是在軟件層對通訊兩個端點的抽象.對于一個給定得連接,在每一臺機器上都有它們自己的socket.,在java中.我們使用socket來建立計算機間的相互連接,然后我們通過socket得到輸入輸出流(InputStream and OutputStream ),使用這些IO流來傳送我們要發(fā)送的消息.我們現(xiàn)在擁有兩類socket使用:,SeverSocket,這是為服務器準備的.用來監(jiān)聽客戶端的連接.,Socket,這是客戶端用來連接服務器使用的.,第049課 網(wǎng)絡編程,當客戶端創(chuàng)建了一
6、個到服務器的連接,服務器會返回(通過accept()一個Socket來表述與客戶端的連接.,Socket,從這時起,你就擁有了一個真正的Socket到Socket的連接,并且它們之間毫無差別.,2 Sockets,第049課 網(wǎng)絡編程,它是服務器的連接器.它實際的工作就是等待這其他的機器來連接它,然后它會生成一個真正的Socket來進行連接.,你只需要一個端口就可以創(chuàng)建ServerSocket.你不必指定任何IP,因為它就是你本地機器的IP. 當連接創(chuàng)建后,ServerSocket會得到連接進來的Socket的地址信息.,ServerSocket,2 Sockets,第049課 網(wǎng)絡編程,2.
7、1 例子,服務器首先監(jiān)聽一個網(wǎng)絡連接,當連接成功建立以后,得到InputStream和OutputStream.,例子描述,他們通過Reader和Writer裝飾一下,然后在經(jīng)過BufferedReader 和PrintWriter的裝飾.此時開始真正的信息傳遞.,服務器會從BufferedReader讀出所有從客戶端發(fā)送的消息并從PrintWriter發(fā)送出去,直到收到”END”為止.然后關(guān)閉網(wǎng)絡連接.,2 Sockets,第049課 網(wǎng)絡編程,客戶端創(chuàng)建一個Socket來連接到服務器,然后像服務器一樣創(chuàng)建IO流并裝飾一下.然后發(fā)送幾行文本信息,同時注意收聽服務器會有什么反應.,2.1 例子
8、,2 Sockets,第049課 網(wǎng)絡編程,import java.io.*; import .*; public class JabberServer public static final int PORT = 8080; public static void main(String args) throws IOException ServerSocket s = new ServerSocket(PORT); System.out.println(Started: + s); try Socket socket = s.accept(); try System.out.println(
9、 Connection accepted: + socket); BufferedReader in = new BufferedReader( new InputStreamReader( socket.getInputStream();,line: 01,line: 02,line: 03,2.1 例子,2 Sockets,第049課 網(wǎng)絡編程,PrintWriter out = new PrintWriter( new BufferedWriter( new OutputStreamWriter( socket.getOutputStream(),true); while (true)
10、String str = in.readLine(); if (str.equals(END) break; System.out.println(Echoing: + str); out.println(str); finally System.out.println(closing.); socket.close(); finally s.close(); /:,line: 04,line: 05,2.1 例子,2 Sockets,第049課 網(wǎng)絡編程,line:01,這里你會看到到,創(chuàng)建一個ServerSocket只需要一個端口(port).,line: 03,當調(diào)用accept()的時
11、候,這個函數(shù)會發(fā)生阻塞直到有客戶端連接進來.在它等待連接的時候其他的線程是可以正常運行的.當一個連接創(chuàng)建后,accept()會返回一個Socket對象用來描述這個連接.,2.1 例子,2 Sockets,第049課 網(wǎng)絡編程,這里我們要注意確保sockets能夠被干凈的清除.,line: 02,try-finally塊會保證無論任何情況,ServerSocket都會被安全的關(guān)閉.,line: 05,line: 03,line: 04,try-finally塊來保證Soecket可以被安全的關(guān)閉.,Socket是非常重要的內(nèi)存資源,所以使用時要非常的小心.你必須確保Socket能夠正確的清除.,
12、2.1 例子,2 Sockets,第049課 網(wǎng)絡編程,下面我們來看看客戶端是如何利用創(chuàng)建的Socket來生成IO流進行讀寫操作的.,將InputStream和OutputStream兩個對象分別用InputStreamReader和OutputStreamWriter包裝一下.,然后,利用InputStreamReader和OutputStreamWriter對需要在網(wǎng)絡傳輸?shù)臄?shù)據(jù)進行處理,2.1 例子,2 Sockets,第049課 網(wǎng)絡編程,import .*; import java.io.*; public class JabberClient public static void
13、main(String args) throws IOException InetAddress addr = InetAddress.getByName(null); System.out.println(addr = + addr); Socket socket = new Socket(addr, JabberServer.PORT); try System.out.println(socket = + socket); BufferedReader in = new BufferedReader( new InputStreamReader(socket.getInputStream(
14、);,2.1 例子,2 Sockets,第049課 網(wǎng)絡編程,PrintWriter out = new PrintWriter(new BufferedWriter( new OutputStreamWriter(socket.getOutputStream(),true); for(int i = 0; i 10; i +) out.println(howdy + i); String str = in.readLine(); System.out.println(str); out.println(END); finally System.out.println(closing.); s
15、ocket.close(); /:,2.1 例子,2 Sockets,小結(jié):,IP地址 端口 ServerSocket Socket flush操作,第049課 網(wǎng)絡編程,1、如下不是IP地址的是( ) A) B) C) D) 2、一個網(wǎng)絡連接首先是由誰發(fā)起的( ) A)服務器 B)路由器 C)客戶端 D)網(wǎng)關(guān) 3、能夠監(jiān)聽網(wǎng)絡連接的類是( ) A)ServerSocket B)Socekt C)Flush D)PrintWriter,小測驗(單選題):,第049課 網(wǎng)絡編程,1、如下不是IP地址的是( c) A)192.16
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版?zhèn)€人民間借款合同書范本:個人光伏發(fā)電設(shè)備貸款合作協(xié)議4篇
- 潮州2024年廣東潮州市科學技術(shù)局屬下事業(yè)單位招聘10人(第二輪)筆試歷年參考題庫附帶答案詳解
- 2025年度個人經(jīng)營性短期借款合同:創(chuàng)業(yè)資金支持范本
- 泰州2024年江蘇泰州靖江市公安局補錄招聘警務輔助人員18人筆試歷年參考題庫附帶答案詳解
- 楚雄云南楚雄雙江自治縣綜合行政執(zhí)法局招聘編外長聘人員筆試歷年參考題庫附帶答案詳解
- 文山2025年云南文山市公安局第一批警務輔助人員招聘47人筆試歷年參考題庫附帶答案詳解
- 2025年度店鋪升級改造施工及后期維護服務合同范本3篇
- 2025年冀少新版選修化學上冊月考試卷含答案
- 2025年浙教版必修5語文下冊月考試卷含答案
- 2025版影視作品剪輯制作與市場推廣合同范本3篇
- 衛(wèi)生服務個人基本信息表
- 醫(yī)學脂質(zhì)的構(gòu)成功能及分析專題課件
- 高技能人才培養(yǎng)的策略創(chuàng)新與實踐路徑
- 廣東省湛江市廉江市2023-2024學年八年級上學期期末考試數(shù)學試卷(含答案)
- 2024年湖北省知名中小學教聯(lián)體聯(lián)盟中考語文一模試卷
- 安徽省蕪湖市2023-2024學年高一上學期期末考試 生物 含解析
- 交叉口同向可變車道動態(tài)控制與信號配時優(yōu)化研究
- 燃氣行業(yè)有限空間作業(yè)安全管理制度
- 數(shù)列練習題(含答案)基礎(chǔ)知識點
- 人教版(2024新版)七年級上冊英語期中+期末學業(yè)質(zhì)量測試卷 2套(含答案)
- 安華農(nóng)業(yè)保險股份有限公司北京市地方財政生豬價格指數(shù)保險條款(風險敏感型)
評論
0/150
提交評論