java編程之socket

java編程之socket

ID:41032370

大?。?35.50 KB

頁數(shù):30頁

時(shí)間:2019-08-14

java編程之socket_第1頁
java編程之socket_第2頁
java編程之socket_第3頁
java編程之socket_第4頁
java編程之socket_第5頁
資源描述:

《java編程之socket》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫

1、7.2面向套接字編程我們已經(jīng)通過了解Socket的接口,知其所以然,下面我們就將通過具體的案例,來熟悉Socket的具體工作方式7.2.1使用套接字實(shí)現(xiàn)基于TCP協(xié)議的服務(wù)器和客戶機(jī)程序依據(jù)TCP協(xié)議,在C/S架構(gòu)的通訊過程中,客戶端和服務(wù)器的Socket動(dòng)作如下:客戶端:1.用服務(wù)器的IP地址和端口號(hào)實(shí)例化Socket對象。2.調(diào)用connect方法,連接到服務(wù)器上。3.將發(fā)送到服務(wù)器的IO流填充到IO對象里,比如BufferedReader/PrintWriter。4.利用Socket提供的getInputStream和getOut

2、putStream方法,通過IO流對象,向服務(wù)器發(fā)送數(shù)據(jù)流。5.通訊完成后,關(guān)閉打開的IO對象和Socket。服務(wù)器:1.在服務(wù)器,用一個(gè)端口來實(shí)例化一個(gè)ServerSocket對象。此時(shí),服務(wù)器就可以這個(gè)端口時(shí)刻監(jiān)聽從客戶端發(fā)來的連接請求。2.調(diào)用ServerSocket的accept方法,開始監(jiān)聽連接從端口上發(fā)來的連接請求?! ?.利用accept方法返回的客戶端的Socket對象,進(jìn)行讀寫IO的操作通訊完成后,關(guān)閉打開的流和Socket對象。7.2.1.1開發(fā)客戶端代碼根據(jù)上面描述的通訊流程,我們可以按如下的步驟設(shè)計(jì)服務(wù)器端的代碼

3、。第一步,依次點(diǎn)擊Eclipse環(huán)境里的“文件”

4、“新建”

5、“項(xiàng)目”選項(xiàng),進(jìn)入“新建項(xiàng)目”的向?qū)υ捒颍谄渲羞x中“Java項(xiàng)目”,點(diǎn)擊“下一步”按鈕,在隨后彈出的對話框里,在其中的“項(xiàng)目名”一欄里,輸入項(xiàng)目名“TCPSocket”,其它的選項(xiàng)目選擇系統(tǒng)默認(rèn)值,再按“完成”按鈕,結(jié)束創(chuàng)建Java項(xiàng)目的動(dòng)作。第二步,完成創(chuàng)建項(xiàng)目后,選中集成開發(fā)環(huán)境左側(cè)的項(xiàng)目名“TCPSocket”,點(diǎn)擊右鍵,在隨后彈出的菜單里依次選擇“新建”!“類”的選項(xiàng),創(chuàng)建服務(wù)器類的代碼。在隨后彈出的“新建Java類”的對話框里,輸入包名“tcp”,輸入文件名“Se

6、rverCode”,請注意大小寫,在“修飾符”里選中“公用”,在“想要?jiǎng)?chuàng)建哪些方法存根”下,選中“publicstaticvoidmain(String[]args)”單選框,同時(shí)把其它兩項(xiàng)目取消掉,再按“完成”按鈕,可以生成代碼。第三步,在生成的代碼里,編寫引入Java包的代碼,只有當(dāng)我們引入這些包后,我們才能調(diào)用這些包里提供的IO和Socket類的方法。packagetcp;importjava.io.BufferedReader;importjava.io.BufferedWriter;importjava.io.IOExcept

7、ion;importjava.io.InputStreamReader;importjava.io.OutputStreamWriter;importjava.io.PrintWriter;importjava.net.ServerSocket;importjava.net.Socket;第四步,編寫服務(wù)器端的主體代碼,如下所示。publicclassServerCode{//設(shè)置端口號(hào)publicstaticintportNo=3333;publicstaticvoidmain(String[]args)throwsIOExcepti

8、on{ServerSockets=newServerSocket(portNo);System.out.println("TheServerisstart:"+s);//阻塞,直到有客戶端連接Socketsocket=s.accept();try{System.out.println("AccepttheClient:"+socket);//設(shè)置IO句柄BufferedReaderin=newBufferedReader(newInputStreamReader(socket.getInputStream()));PrintWriter

9、out=newPrintWriter(newBufferedWriter(newOutputStreamWriter(socket.getOutputStream())),true);while(true){Stringstr=in.readLine();if(str.equals("byebye")){break;}System.out.println("InServerreveivedtheinfo:"+str);out.println(str);}}finally{System.out.println("closetheServe

10、rsocketandtheio.");socket.close();s.close();}}}這段代碼的主要業(yè)務(wù)邏輯是:1.在上述代碼里的main函數(shù)前,我們設(shè)置了通訊所用到的端口號(hào),為3333。2.在ma

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時(shí)聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請聯(lián)系客服處理。