Java網絡編程技術01_第1頁
Java網絡編程技術01_第2頁
Java網絡編程技術01_第3頁
Java網絡編程技術01_第4頁
Java網絡編程技術01_第5頁
已閱讀5頁,還剩79頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

Java網絡編程技術0網絡應用軟件1.Server/ClientWWW、FTP、EmailDatabaseapplication2.P2P迅雷、fleshget、easyMule、QQ1第1章Java網絡編程預備知識1.1Java開發環境 1.2TCP/IP協議 1.3I/O流1.4Java多線程1.5JDBC編程 1.6JavaGUI開發技術1.7Java事件 1.8本章小結 21.1Java開發環境1.1.1JDK+notebook1.1.2IDEEclipse,NetBean,JBuilder31.2TCP/IP協議1.2.1TCP/IP協議與OSI參考模型1.2.2IP地址分類與子網劃分1.2.3常用網絡測試工具41.2.1TCP/IP協議和OSI參考模型TCP/IP協議棧與OSI參考模型的對應關系。應用層表示層會話層傳輸層網絡層數據鏈路層物理層應用層傳輸層網絡層7654321物理層數據鏈路層OSI參考模型TCP/IP5TCP/IP協議棧的封裝過程

用戶數據用戶數據Appl首部應用數據Tcp首部Ip首部應用數據Tcp首部以太網首部應用數據Tcp首部Ip首部以太網首部TCP段IP數據報1420204以太網幀46-1500字節應用程序TCPIP以太網驅動程序6TCP/IP協議棧HTTP、Telnet、FTP、TFTP、Ping、etcTCP/UDPARP/RARPIPIGMPICMPEthernet、802.3、PPP、HDLC、FR、etc接口和線纜應用層傳輸層網絡層

數據鏈路層提供應用程序網絡接口建立端到端連接尋址和路由選擇物理介質訪問二進制數據流傳輸

物理層7應用層文件傳輸FTP、TFTP郵件效勞SMTP、POP3網絡管理SNMP、Telnet、Ping、Tracert網絡效勞HTTP、DNS、WINS8傳輸層協議應用層傳輸層網絡層網絡接入層TCPUDP9TCP/UDP報文格式0816243116位源端口16位目的端口32位序列號32位確認號URGACKPSHRSTSYNFIN首部長度保留(6位)16位窗口大小16位TCP校驗和16位緊急指針選項數據0816243116位源端口16位目的端口16位UDP校驗和數據UDP報文格式TCP報文格式16位UDP長度10端口號

傳輸層協議用端口號來標識和區分各種上層應用程序。HTTPFTPTelnetSMTPDNSTFTPSNMPTCPUDPIP數據包套接字8020/212325536916111TCP連接clientserverSYN(seq=a)SYN(seq=b,ack=a+1)ACK(seq=b+1)12斷開TCP連接clientserverFIN(seq=a)ACK(seq=a+1)FIN(seq=b,ack=a+1)ACK(seq=b+1)13網絡層協議概述網絡接入層應用層傳輸層網絡層IPARPRARPICMP14IP報文格式版本報文長度服務類型總長度標識符標志片偏移生存時間協議報頭校驗和源IP地址目的IP地址IP選項15ARP-地址解析協議需要的MAC地址?IP:/24MAC:00-E0-FC-00-00-11IP:/24MAC:00-E0-FC-00-00-12ARPRequest?ARPReply

對應的MAC:00-E0-FC-00-00-1216RARP-反向地址解析協議我的IP地址是什么?無盤工作站RARPServerRARPRequest?RARPReply你的IP地址是17ICMP協議B可達嗎?ICMPEchoRequestICMPEchoReply我在。AB18網絡層常見物理設備路由器19數據鏈路層數據鏈路層是OSI參考模型的第二層,在物理層根底上向網絡層提供效勞數據鏈路層為物理鏈路上提供可靠的數據傳輸局域網的數據鏈路層協議有以太網、令牌環網等廣域網數據鏈路層協議有PPP、HDLC、FrameRelay等20數據鏈路層功能幀同步功能過失控制功能流量控制功能鏈路管理功能1物理層2數據鏈路層4傳輸層3網絡層5會話層7應用層6表示層21幀同步功能幀同步是指能夠從接收到的比特流中明確地區分出數據幀的起始與終止的地方常見幀同步的方法有:字節計數法字符填充的首尾定界符法比特填充的首尾定界符法違法編碼法22流量控制和鏈路管理流量控制功能不是只有數據鏈路層才提供流量控制功能是控制發送方發送數據的速率鏈路管理是指數據鏈路層連接的建立、維持和釋放23LAN數據鏈路層標準IEEE802制定了系列局域網標準IEEE802.3:以太網IEEE802.4:令牌總線IEEE802.5:令牌環IEEE802.11:無線局域網IEEE802標準涵蓋了物理層和數據鏈路層24WAN數據鏈路層標準WAN效勞通常由電信運營商提供WAN數據鏈路層標準包括:HDLCPPPX.25FrameRelay25數據鏈路層常見設備交換機26物理層物理層位于OSI參考模型的最底層,它直接面向實際承擔數據傳輸的物理媒體(即信道)。物理層的傳輸單位為比特。物理層是指在物理媒體之上為數據鏈路層提供一個原始比特流的物理連接。物理層協議規定了與建立、維持及斷開物理信道所需的機械的、電氣的、功能性的和規程性的特性。其作用是確保比特流能在物理信道上傳輸。27物理層的功能為數據端設備提供傳送數據的通路,數據通路可以是一個物理媒體,也可以是多個物理媒體連接而成.一次完整的數據傳輸,包括激活物理連接,傳送數據,終止物理連接.傳輸數據.物理層要形成適合數據傳輸需要的實體,為數據傳送效勞.一是要保證數據能在其上正確通過,二是要提供足夠的帶寬(帶寬是指每秒鐘內能通過的比特(BIT)數),以減少信道上的擁塞.傳輸數據的方式能滿足點到點,一點到多點,串行或并行,半雙工或者全雙工,同步或異步傳輸的需要.28常見的物理層接口10M以太網接口100M以太網接口1000M以太網接口2910M以太網接口10Base-T目前使用最廣泛的局域網標準之一使用雙絞線作為物理傳輸介質10Base5曾經廣泛應用于主干局域網使用粗同軸電纜作為物理傳輸介質10Base2使用細同軸電纜作為物理傳輸介質3010Base-T的物理介質3類雙絞線4類雙絞線5類雙絞線超5類雙絞線6類雙絞線有屏蔽與非屏蔽之分均為8芯電纜雙絞線的類型由單位長度內的絞環數確定315類雙絞線的線序直連網線交叉網線Side1Side2Side112345678123456781=白/橙2=橙3=白/綠4=藍5=白/藍6=綠7=白/棕8=棕Side2Side1Side2Side1Side212345678123456781=白/橙2=橙3=白/綠4=藍5=白/藍6=綠7=白/棕8=棕1=白/橙2=橙3=白/綠4=藍5=白/藍6=綠7=白/棕8=棕1=白/綠2=綠3=白/橙4=藍5=白/藍6=橙7=白/棕8=棕32100M以太網接口100Base-TX物理介質采用5類以上雙絞線網段長度最多100米100Base-FX物理介質采用單模光纖,網段長度可達10公里物理介質采用多模光纖,網段長度最多2000米快速以太網由IEEE802.3u標準定義331000M以太網接口1000Base-T物理介質采用5類以上雙絞線,網段長度最多100米1000Base-F物理介質采用多模光纖,網段長度最多500米IEEE802.3z和802.3ab34設備連接方式351.2.2IP地址分類與子網劃分36二進制與十進制的轉化十進制總合為2558bit37二進制與十進制之間的轉化+++++++例子:38IP地址的進制轉化IP地址:字節〔8位〕●字節〔8位〕●字節〔8位〕●字節〔8位〕

11000000101010000000000100001011等于192●168●1●1139IP地址介紹IP地址唯一標示一臺網絡設備私有IP地址~55~55114440~55

~55

~55~55IP地址分類41特殊IP地址網絡部分主機部分地址類型用途127any全“0”全“1”Any全“0”Any全“1”網絡地址代表一個網段廣播地址特定網段的所有節點環回地址環回測試廣播地址本網段所有節點所有網絡華為Quidway路由器用于指定默認路由42子網掩碼介紹網絡設備使用子網掩碼〔subnetmasking〕決定IP地址中哪局部為網絡局部,哪局部為主機局部。子網掩碼使用與IP地址一樣的格式。子網掩碼的網絡局部和子網局部全都是1,主機局部全都是0。缺省狀態下,如果沒有進行子網劃分,A類網絡的子網掩碼為,B類網絡的子網掩碼為,C類網絡子網掩碼為。利用子網,網絡地址的使用會更有效。對外仍為一個網絡,對內部而言,那么分為不同的子網。43網絡地址與子網掩碼IP地址:子網掩碼:網絡地址:44子網掩碼的表示方法IP地址子網掩碼子網掩碼比特數子網掩碼表示255.255.255.24011111111111111111111111111110000

192.168.1.7110000001010100000000001000001118+8+8+4=28/2845網絡地址的計算IP地址子網掩碼網絡地址(二進制)網絡地址/28

255.255.255.24011111111111111111111111111110000

192.168.1.71100000010101000000000010000011111000000101010000000000100000000IP地址為:/1946主機數的計算主機數為:

2n可用主機數為:2n-2子網掩碼N網絡位主機位111111111111110000000000000047主機數計算舉例IP地址為:該子網掩碼二進制表示為:11111111,11111111,11111111,1111000028bits網絡位4bits主機位主機總數為:24可用主機數為:24-248子網數計算舉例IP地址為:該子網掩碼二進制表示為:11111111,11111111,11111111,1111000028bits網絡位4bits主機位子網總數為:28-4可用子網數為:28-4-249無子網編址無子網編址是指使用自然掩碼,不對網段進行細分。比方B類網段,采用作為掩碼。/16/16/1650帶子網編址B類網段,,51子網規劃舉例例子:某公司分配到C類地址。假設需要20個子網,每個子網有5臺主機,我們該如何劃分?52變長子網掩碼〔VLSM〕ISP通告53無類域間路由〔CIDR〕CIDR減少了路由表的規模,增了網絡的可擴展性。InternetISP通告路由541.2.3常用網絡測試工具PingTracert55PingPing是測試網絡聯接狀況以及信息包發送和接收狀況非常有用的工具,是網絡測試最常用的命令。Ping向目標主機(地址)發送一個回送請求數據包,要求目標主機收到請求后給予答復,從而判斷網絡的響應時間和本機是否與目標主機(地址)聯通。如果執行Ping不成功,那么可以預測故障出現在以下幾個方面:網線故障,網絡適配器配置不正確,IP地址不正確。如果執行Ping成功而網絡仍無法使用,那么問題很可能出在網絡系統的軟件配置方面,Ping成功只能保證本機與目標主機間存在一條連通的物理路徑。56Ping的使用命令格式: pingIP地址或主機名[-t][-a][-ncount][-lsize]參數含義:-t不停地向目標主機發送數據;-a以IP地址格式來顯示目標主機的網絡地址;-ncount指定要Ping多少次,具體次數由count來指定;-lsize指定發送到目標主機的數據包的大小。57Ping的舉例測試本機與華為網站是否連接ping測試本機與華為網站的網絡連接狀況ping-n10000–l150058TracertTracert命令用來顯示數據包到達目標主機所經過的路徑,并顯示到達每個節點的時間。命令功能同Ping類似,但它所獲得的信息要比Ping命令詳細得多,它把數據包所走的全部路徑、節點的IP以及花費的時間都顯示出來。該命令比較適用于大型網絡。59Tracert舉例測試本機到華為網站所經過的路徑tracert601.3I/O流importjava.io.*;classIODemo{ publicstaticvoidmain(String[]args) { try { FileWriterfileWriter=newFileWriter("iotest.txt"); BufferedWriterbufWriter=newBufferedWriter(fileWriter); bufWriter.write("文件寫入字符流"); bufWriter.newLine(); bufWriter.write("新一行"); bufWriter.flush(); fileWriter.close(); bufWriter.close(); System.out.println("iotest.txt文件寫入成功\n"); System.out.println("iotest.txt內容:\n");

61FileReaderfileReader=newFileReader("iotest.txt"); BufferedReaderbufReader=newBufferedReader(fileReader);StringstrLine=null; do { strLine=bufReader.readLine(); System.out.println(strLine==null?"":strLine); }while(strLine!=null); fileReader.close(); bufReader.close(); System.out.println("iotest.txt內容完了"); } catch(IOExceptionex){ ex.printStackTrace();}}}621.4Java多線程在一個程序中,如果有一個或多個耗時很長的計算,在單線程程序中,每個計算要依次完成,一個計算要在完全結束后,其他計算才能進行,如下程序:63classdog{ publicvoidrun() { while(true) { System.out.println("adogisrunning!"); } }}classcat{ publicvoidrun() { while(true) { System.out.println("acatisrunning!"); } }}64classmouse{ publicvoidrun() { while(true) { System.out.println("amouseisrunning!"); } }}classmyThread{ publicstaticvoidmain(String[]aaa) { dogd=newdog(); d.run(); catc=newcat(); c.run(); mousem=newmouse(); m.run(); }

}65程序運行時,dog類的run方法一直在運行,其他類的方法得不到運行的時機。使用Thread類實現多線程:66classdogextendsThread{ publicvoidrun() { while(true) { System.out.println("adogisrunning!"); } }}classcatextendsThread{ publicvoidrun() { while(true) { System.out.println("acatisrunning!"); } }}67classmouseextendsThread{ publicvoidrun() { while(true) { System.out.println("amouseisrunning!"); } }}classmyThread{ publicstaticvoidmain(String[]aaa) { Threadt1=newdog(); t1.start(); Threadt2=newcat(); t2.start(); Threadt3=newmouse(); t3.start(); }}68Dog類方法、cat類和mouse類的方法都能得到執行注意不能這樣實現classmyThread{ publicstaticvoidmain(String[]aaa) { dogd=newdog(); d.run(); catc=newcat(); c.run(); mousem=newmouse(); m.run(); } }69使用Runnable接口實現多線程:classdogimplementsRunnable{ publicvoidrun() { while(true) { System.out.println("adogisrunning!"); } }}classcatimplementsRunnable{ publicvoidrun() { while(true) { System.out.println("acatisrunning!"); } }}70classmouseimplementsRunnable{ publicvoidrun() { while(true) { System.out.println("amouseisrunning!"); } }}classmyThread{ publicstaticvoidmain(String[]aaa) { Threadt1=newThread(newdog()); t1.start(); Threadt2=newThread(newcat()); t2.start(); Threadt3=newThread(newmouse()); t3.start(); }}71使用內部類實現多線程classST{ publicvoidrun() { Threadt1=newThread(newdog()); t1.start(); Threadt2=newThread(newcat()); t2.start(); Threadt3=newThread(newmouse()); t3.start(); } classdogimplementsRunnable { publicvoidrun() { while(true) { System.out.println("adogisrunning!"); } } }72

classcatimplementsRunnable { publicvoidrun() { while(true) { System.out.println("acatisrunning!"); } } } classmouseimplementsRunnable { publicvoidrun() { while(true) { System.out.println("amouseisrunning!"); } } }}73classmyThread{ publicstaticvoidmain(String[]aaa) { STt=newST(); t.run(); }}線程同步問題synchronized方法741.5JDBC編程Java包java.sql1.注冊驅動2.實例連接3.實例statement4.執行statement5.實例resultset75importjava.sql.*;interfaceDB{ ConnectiongetCon(); StatementgetSTM(); voidDisplayData();}classmyDBimplementsDB{ publicConnectiongetCon() { try { "); Stringstrurl="jdbc:odbc:driver={MicrosoftAccessDriver(*.mdb)};DBQ=books.mdb";Connectionconn=DriverManager.getConnection(strurl); returnconn; } catch(Exceptione) { System.out.println(0); } returnnull; }

76publicStatementgetSTM() { try { Connectionc=getCon(); Statements=c.createStatement(); returns; } catch(Exceptione) { System.out.println(1); } returnnull; }

77classTest{ publicstaticvoidmain(String[]args) { DBdb=newmyDB(); db.DisplayData(); }}78publicvoidDisplayData() { try { Statementss=getSTM(); ResultSetrs=ss.executeQuery("select*fromstudent"); while(rs.next()){System.out.print(rs.getString(1)+""); System.out.print(rs.getString(2)+""); System.out.print(rs.getString(3)+""); System.out.println(rs.getString(4));} } catch(Exceptione) { System.out.println(2); } }}791.6JavaGUI和Java事件import.*;importjavax.swing.*;classJav

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論