資源描述:
《java教程socket網(wǎng)絡編程》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、第9章Socket網(wǎng)絡編程SunnyLiuweiliu_china@163.com本課教學內(nèi)容客戶/服務器模型協(xié)議SocketSocket概況IP地址和端口創(chuàng)建Socket輸入包創(chuàng)建服務器應用程序用于服務器的類和方法本課教學內(nèi)容創(chuàng)建服務器監(jiān)聽客戶請求啟動服務器創(chuàng)建網(wǎng)絡客戶機所需的類和方法創(chuàng)建Socket類的對象從套接字讀和寫入套接字關(guān)閉連接問題陳述應用場景需要在Java中開發(fā)一個服務器應用程序,其功能說明如下:服務器應該能從客戶機的Frame窗口接收用戶登錄信息。服務器應該能夠?qū)⒂脩粜畔⒎祷亟o客
2、戶。服務器應支持多線程,同時應該能為任何數(shù)量的客戶機提供服務。服務器運行在端口#1432上。客戶/服務器模型簡介客戶/服務器模型是一種內(nèi)部數(shù)據(jù)處理和存儲與數(shù)據(jù)顯示相分離的應用程序開發(fā)結(jié)構(gòu)。客戶請求服務器而服務器完成這些請求。這些請求通過網(wǎng)絡傳到服務器。由于服務器所作的處理對客戶是隱藏的。一個服務器可以服務多臺客戶機。客戶/服務器模型通信原理客戶機與服務器之間使用的大部分通信組件都是基于Socket接口來實現(xiàn)的Socket是兩個程序之間進行雙向數(shù)據(jù)傳輸?shù)木W(wǎng)絡通信端點,由一個IP地址和一個端口號來標
3、識每個服務器程序在提供服務時都要在一個端口進行,而想使用該服務的客戶機也必須連接到該端口??蛻?服務器模型客戶機/服務器工作模式:協(xié)議定義數(shù)據(jù)以包的形式從一臺機器傳到另一臺機器。規(guī)則負責把打包數(shù)據(jù)放進包里,傳送速度以及重建數(shù)據(jù)回到其原來形式。這些規(guī)則稱為網(wǎng)絡協(xié)議。協(xié)議TCP協(xié)議和UDP協(xié)議TCP是TranferControlProtocol的簡稱,是一種面向連接的保證可靠傳輸?shù)膮f(xié)議。通過TCP協(xié)議傳輸,得到的是一個順序的無差錯的數(shù)據(jù)流。UDP是UserDatagramProtocol的簡稱,是一
4、種無連接的協(xié)議,每個數(shù)據(jù)報都是一個獨立的信息,包括完整的源地址或目的地址,它在網(wǎng)絡上以任何可能的路徑傳往目的地,因此能否到達目的地,到達目的地的時間以及內(nèi)容的正確性都是不能被保證的。SocketSocket概況Socket是基類,支持TCP協(xié)議。Socket類提供流I/O方法,使從Socket讀出和寫進方便。ServerSocket是由因特網(wǎng)服務器程序用于響應客戶請求的類。ServerSocket實際上并不完成服務,而是為客戶創(chuàng)建Socket對象。通信在創(chuàng)建的對象之間進行。SocketSocke
5、t類和ServerSocket類的構(gòu)造方法:Socket(InetAddressaddress,intport);Socket(InetAddressaddress,intport,booleanstream);Socket(Stringhost,intprot);Socket(Stringhost,intprot,booleanstream);Socket(SocketImplimpl)Socket(Stringhost,intport,InetAddresslocalAddr,intloca
6、lPort)Socket(InetAddressaddress,intport,InetAddresslocalAddr,intlocalPort)ServerSocket(intport);ServerSocket(intport,intbacklog);ServerSocket(intport,intbacklog,InetAddressbindAddr)SocketIP地址和端口TCP協(xié)議需要兩個數(shù)據(jù)項:IP地址和端口號。每個協(xié)議都有缺省的端口號,如果端口號未指定,就使用它internet
7、服務端口號端口號internet服務telnet23nntp119ftp21www80DNS53POP3110Socket創(chuàng)建Socket下面是一個典型的創(chuàng)建客戶端Socket的代碼:try{Socketsocket=newSocket("127.0.0.1",1432);//127.0.0.1是TCP/IP協(xié)議中默認的本機地址}catch(IOExceptione){System.out.println("Error:"+e);}Socket輸入包使用import語句,為網(wǎng)絡輸入必要的包。例如
8、:importjava.net.*;importjava.io.*;創(chuàng)建服務器應用程序用于服務器的類和方法要創(chuàng)建服務器,你需要創(chuàng)建ServerSocket對象監(jiān)聽客戶請求的特定端口。當它認出有效請求,服務器Socket獲得客戶創(chuàng)建的Socket對象。用這Socket產(chǎn)生位于服務器和客戶機之間的通信。創(chuàng)建服務器應用程序ServerSocket類ServerSocket類的構(gòu)造函數(shù)帶兩個參數(shù):第一個是端口號碼;第二個參數(shù)表示可連接的最大數(shù)。ServerSocket類提供如下方法:監(jiān)聽連接返回地址和本