JavaTCP方式服務(wù)器端編程_第1頁
JavaTCP方式服務(wù)器端編程_第2頁
JavaTCP方式服務(wù)器端編程_第3頁
JavaTCP方式服務(wù)器端編程_第4頁
JavaTCP方式服務(wù)器端編程_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

TCP方式服務(wù)器端編程2學(xué)習(xí)目標(biāo)知識目標(biāo)掌握TCP方式服務(wù)器端編程方法01能力目標(biāo)能夠運用ServerSocket類進(jìn)行服務(wù)器端編程023服務(wù)器端網(wǎng)絡(luò)編程在服務(wù)器端程序編程中,由于服務(wù)器端實現(xiàn)的是被動等待連接,所以服務(wù)器端編程的第一個步驟是監(jiān)聽端口,也就是監(jiān)聽是否有客戶端連接到達(dá)。實現(xiàn)服務(wù)器端監(jiān)聽的代碼為:

ServerSocketss=newServerSocket(10000);該代碼實現(xiàn)的功能是監(jiān)聽當(dāng)前計算機的10000號端口,如果在執(zhí)行該代碼時,10000號端口已經(jīng)被別的程序占用,那么將拋出異常。否則將實現(xiàn)監(jiān)聽。服務(wù)器端編程的第二個步驟是獲得連接。該步驟的作用是當(dāng)有客戶端連接到達(dá)時,建立一個和客戶端連接對應(yīng)的Socket連接對象,從而釋放客戶端連接對于服務(wù)器端端口的占用。實現(xiàn)功能就像公司的前臺一樣,當(dāng)一個客戶到達(dá)公司時,會告訴前臺我找某某某,前臺就通知某某某,然后就可以繼續(xù)接待其它客戶了。4服務(wù)器端網(wǎng)絡(luò)編程通過獲得連接,使得客戶端的連接在服務(wù)器端獲得了保持,另外使得服務(wù)器端的端口釋放出來,可以繼續(xù)等待其它的客戶端連接。實現(xiàn)獲得連接的代碼是:

Socketsocket=ss.accept();該代碼實現(xiàn)的功能是獲得當(dāng)前連接到服務(wù)器端的客戶端連接。需要說明的是accept和前面IO部分介紹的read方法一樣,都是一個阻塞方法,也就是當(dāng)無連接時,該方法將阻塞程序的執(zhí)行,直到連接到達(dá)時才執(zhí)行該行代碼。另外獲得的連接會在服務(wù)器端的該端口注冊,這樣以后就可以通過在服務(wù)器端的注冊信息直接通信,而注冊以后服務(wù)器端的端口就被釋放出來,又可以繼續(xù)接受其它的連接了。5服務(wù)器端網(wǎng)絡(luò)編程連接獲得以后,后續(xù)的編程就和客戶端的網(wǎng)絡(luò)編程類似了,這里獲得的Socket類型的連接就和客戶端的網(wǎng)絡(luò)連接一樣了,只是服務(wù)器端需要首先讀取發(fā)送過來的數(shù)據(jù),然后進(jìn)行邏輯處理以后再發(fā)送給客戶端,也就是交換數(shù)據(jù)的順序和客戶端交換數(shù)據(jù)的步驟剛好相反。這部分的內(nèi)容和客戶端很類似,所以就不重復(fù)了,如果還不熟悉,可以參看下面的示例代碼。

最后,在服務(wù)器端通信完成以后,關(guān)閉服務(wù)器端連接。實現(xiàn)的代碼為:

ss.close();6服務(wù)器端網(wǎng)絡(luò)編程這就是基本的TCP類型的服務(wù)器端編程步驟。下面以一個簡單的echo服務(wù)實現(xiàn)為例子,介紹綜合使用示例。echo的意思就是“回聲”,echo服務(wù)器端實現(xiàn)的功能就是將客戶端發(fā)送的內(nèi)容再原封不動的反饋給客戶端。實現(xiàn)的代碼如下:publicclassSimpleSocketServer{publicstaticvoidmain(String[]args){ServerSocketserverSocket=null;Socketsocket=null;OutputStreamos=null;InputStreamis=null;intport=10000;//監(jiān)聽端口號

try{//建立連接

serverSocket=newServerSocket(port);7服務(wù)器端網(wǎng)絡(luò)編程

//獲得連接

socket=serverSocket.accept();//接收客戶端發(fā)送內(nèi)容

is=socket.getInputStream();byte[]b=newbyte[1024];intn=is.read(b);//輸出

System.out.println("客戶端發(fā)送內(nèi)容為:"+newString(b,0,n));//向客戶端發(fā)送反饋內(nèi)容

os=socket.getOutputStream();os.write(b,0,n);

}catch(Exceptione){e.printStackTrace();}finally{try{//關(guān)閉流和連接

os.close();is.close();socket.close();serverSocket.close();}catch(Exceptione){}}}}89服務(wù)器端網(wǎng)絡(luò)編程在該示例代碼中建立了一個監(jiān)聽當(dāng)前計算機10000號端口的服務(wù)器端Socket連接,然后獲得客戶端發(fā)送過來的連接,如果有連接到達(dá)時,讀取連接中發(fā)送過來的內(nèi)容,并將發(fā)送的內(nèi)容在控制臺進(jìn)行輸出,輸出完成以后將客戶端發(fā)送的內(nèi)容再反饋給客戶端。最后關(guān)閉流和連接對象,結(jié)束程序。在控制臺下面編譯和運行該程序的命令和客戶端部分的類似。這樣

溫馨提示

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

評論

0/150

提交評論