上節(jié)回顧:在學(xué)習(xí)了Socket在建立客戶端和服務(wù)器單項(xiàng)通訊中,分別創(chuàng)建獨(dú)立的Socket,并通過(guò)Socket的屬性。
創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),開陽(yáng)企業(yè)網(wǎng)站建設(shè),開陽(yáng)品牌網(wǎng)站建設(shè),網(wǎng)站定制,開陽(yáng)網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,開陽(yáng)網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。那么如何將兩個(gè)Socket進(jìn)行連接,從而達(dá)到客戶端和服務(wù)器之間建立輸入輸出流進(jìn)行通信呢?在上節(jié)中我們已經(jīng)講到,TCP/IP套接字是最可靠的雙向流協(xié)議,使用TCP/IP可以發(fā)送任意數(shù)量的數(shù)據(jù)。如果發(fā)送方和接收方計(jì)算機(jī)確定好端口,他們就可以通信了,其中的端口用套接字表示。
【示例1】客戶端與服務(wù)器端雙向交流的Socket之服務(wù)器端
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.ServerSocket; import java.net.Socket; public class Server { public static void main(String[] args) throws Exception { ServerSocket server=new ServerSocket(8888); Socket socket=server.accept(); BufferedReader in=new BufferedReader(new InputStreamReader(socket.getInputStream())); BufferedWriter out=new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); while(true){ String str=in.readLine(); System.out.println("客戶端說(shuō):"+str); String str2 = ""; str2 = br.readLine(); //讀到為止,因此一定要輸入換行符! out.write(str2+"\n"); out.flush(); if(str.equals("end")) break; } in.close(); out.close(); socket.close(); } } |
【示例2】客戶端與服務(wù)器端雙向交流的Socket之客戶端
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.InetAddress; import java.net.Socket; import java.net.UnknownHostException; public class Client { static Socket server; public static void main(String[] args) { try { server = new Socket(InetAddress.getLocalHost(), 8888); BufferedReader in = new BufferedReader(new InputStreamReader( server.getInputStream())); BufferedWriter out = new BufferedWriter(new OutputStreamWriter( server.getOutputStream())); BufferedReader wt = new BufferedReader(new InputStreamReader( System.in)); while (true) { String str = wt.readLine(); out.write(str + "\n"); out.flush(); if (str.equals("end")) { break; } System.out.println("服務(wù)器發(fā)說(shuō):" + in.readLine()); } out.close(); in.close(); wt.close(); server.close(); } catch (UnknownHostException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } |
學(xué)習(xí)以上程序后,會(huì)發(fā)現(xiàn)我們必須按照安排好的順序,服務(wù)器和客戶端一問(wèn)一答!不夠靈活?。∧敲慈绾斡枚嗑€程來(lái)實(shí)現(xiàn)更加靈活的雙向通訊呢?下節(jié)我們繼續(xù)~
「全棧Java筆記」是一部能幫大家從零到一成長(zhǎng)為全棧Java工程師系列筆記。筆者江湖人稱 Mr. G,10年Java研發(fā)經(jīng)驗(yàn),曾在神州數(shù)碼、航天院某所研發(fā)中心從事軟件設(shè)計(jì)及研發(fā)工作,從小白逐漸做到工程師、高級(jí)工程師、架構(gòu)師。精通Java平臺(tái)軟件開發(fā),精通JAVAEE,熟悉各種流行開發(fā)框架。
筆記包含從淺入深的六大部分:
A-Java入門階段
B-數(shù)據(jù)庫(kù)從入門到精通
C-手刃移動(dòng)前端和Web前端
D-J2EE從了解到實(shí)戰(zhàn)
E-Java高級(jí)框架精解
F-Linux和Hadoop
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
本文標(biāo)題:12.5-全棧Java筆記:Java網(wǎng)絡(luò)編程(三)-創(chuàng)新互聯(lián)
轉(zhuǎn)載注明:http://jinyejixie.com/article26/dcggjg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名、小程序開發(fā)、企業(yè)建站、定制開發(fā)、品牌網(wǎng)站設(shè)計(jì)、品牌網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)