999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

淺談以java為基礎(chǔ)的Socket通信簡(jiǎn)介及實(shí)現(xiàn)

2017-04-20 18:34:23陶艷芳
青春歲月 2017年5期

【摘要】我們都知道現(xiàn)在通過(guò)各種網(wǎng)絡(luò)工具可以實(shí)現(xiàn)數(shù)據(jù)之間的交流,但是,卻很少有人去理解實(shí)現(xiàn)的原理,本論文就通過(guò)使用java語(yǔ)言,自己來(lái)編寫(xiě)程序,實(shí)現(xiàn)計(jì)算機(jī)中數(shù)據(jù)的交流,通過(guò)閱讀本論文,你會(huì)了解到什么是Socket,什么是端口號(hào),如何使用java來(lái)實(shí)現(xiàn)一個(gè)Socket通信。相信本論文一定會(huì)為你在編程領(lǐng)域有所幫助。

【關(guān)鍵詞】Socket;端口號(hào);java

一、引言

要想自己動(dòng)手實(shí)現(xiàn)Socket編程,我們首先要知道什么是Socket,在此之前,我們就不得不提到TCP協(xié)議,這里我們不要把TCP看得多么高大上,我們只要知道,數(shù)據(jù)如果想要在網(wǎng)絡(luò)中進(jìn)行傳輸,那么就必須要遵守這個(gè)協(xié)議,就像你要成為中華人民共和國(guó)的公民,你首先就必須有國(guó)家承認(rèn)的身份證一樣,這樣我們才能動(dòng)手做其他事情。有了TCP協(xié)議為基礎(chǔ),那我們就可以通過(guò)java語(yǔ)言中提供的類來(lái)實(shí)現(xiàn)Socket編程。

二、java中需要使用到的類

java是一門(mén)面向?qū)ο蟮恼Z(yǔ)言,所謂面向?qū)ο?,只是我們編程的一種思想,在java語(yǔ)言沒(méi)有誕生之前,我們使用到的面向過(guò)程的編程方式,面向過(guò)程就是我們?cè)诰幊讨行枰绞裁?,那就?chuàng)造出來(lái),就像你要去銀行取錢(qián),你要坐車去,那么你就要?jiǎng)?chuàng)造出一輛車,你要使用ATM機(jī),那么就要?jiǎng)?chuàng)造出一臺(tái)ATM機(jī)。而使用面向?qū)ο蟮姆绞剑褪悄阈枰母鞣N東西之前就給你創(chuàng)造好了,你要取錢(qián),你只要輸入密碼和余額就是了。而java中提供了類的概念,就想人類,就是一個(gè)java中的類,而毛主席就是人類的一個(gè)個(gè)體,在java中我們稱毛主席就是人類的一個(gè)對(duì)象。對(duì)于Socket編程而言,java中也提供了相應(yīng)的類,我們只要熟練使用那些類,就能夠?qū)崿F(xiàn)本論文的目標(biāo)。

在java中,以及提供了客戶端的Socket類,而服務(wù)器端,有ServerSocket類,通過(guò)其中的各種屬性和方法,以及在java中常用的輸入流和輸出流等相關(guān)只是,我們就能簡(jiǎn)單的實(shí)現(xiàn)Soket編程。

三、Soket通信模型

現(xiàn)在,我們有了TCP協(xié)議為基礎(chǔ),有了java語(yǔ)言作為媒介,那么就可以開(kāi)始去理解Soket通信模型。首先,我們需要建立服務(wù)器端Server,創(chuàng)建一個(gè)客戶端Client,然后在Server端的指定端口進(jìn)行監(jiān)聽(tīng),所謂的端口,就好像是門(mén)牌號(hào)一樣,客戶端可以通過(guò)ip地址找到對(duì)應(yīng)的服務(wù)器端,但是服務(wù)器端是有很多端口的,每個(gè)應(yīng)用程序?qū)?yīng)一個(gè)端口號(hào),通過(guò)類似門(mén)牌號(hào)的端口號(hào),客戶端才能真正的訪問(wèn)到該服務(wù)器。當(dāng)Client客戶端創(chuàng)建了socket向服務(wù)器端發(fā)送請(qǐng)求后,服務(wù)器端會(huì)接收到客戶端的請(qǐng)求,并創(chuàng)建一個(gè)連接的Socket來(lái)與客戶端通信。而具體的通信,java中提供了輸入流和輸出流的概念。從而實(shí)現(xiàn)數(shù)據(jù)的交互。通信結(jié)束后,我們需要在客戶端和服務(wù)器端都關(guān)閉Socket和相應(yīng)資源,這樣一個(gè)Socket通信就完成了。

四、Socket通信實(shí)現(xiàn)步驟

1、服務(wù)器端創(chuàng)建ServerSocket對(duì)象,ServerSocket server=new ServerSocket(8888);綁定監(jiān)聽(tīng)的端口,如上表示的就是監(jiān)聽(tīng)了8888端口,然后通過(guò)server對(duì)象的accept()方法監(jiān)聽(tīng)客戶端請(qǐng)求,此時(shí)服務(wù)器端就實(shí)現(xiàn)了對(duì)客戶端的連接,通過(guò)建立連接后,可以使用字符流來(lái)接收客戶端發(fā)送過(guò)來(lái)的數(shù)據(jù),InputStream iStream=socket.getInputStream()其中的iStream對(duì)象中就保存了這些數(shù)據(jù),當(dāng)然,此時(shí)我們還可以通過(guò)InputStreamReader 和BufferReader等來(lái)包裝輸入流,然后通過(guò)while循環(huán)來(lái)將其中的數(shù)據(jù)讀取并處理相關(guān)的業(yè)務(wù)邏輯,最后關(guān)閉相應(yīng)的資源。

2、客戶端要?jiǎng)?chuàng)建Socket對(duì)象,Socket socketCli=new Socket("127.0.0.1",8888);這里是用的是Socket類,其中包裝了各種客戶端需要使用到的方法,該類的構(gòu)造函數(shù)中有兩個(gè)參數(shù),其中第一個(gè)參數(shù)數(shù)服務(wù)器的IP地址,這里寫(xiě)的127.0.0.1,表示的是服務(wù)器地址為本機(jī),如果你要連接的服務(wù)器是遠(yuǎn)程服務(wù)器,那么你就需要寫(xiě)上你要連接的服務(wù)器的地址,而第二個(gè)參數(shù)表示的是要連接該服務(wù)器上的哪個(gè)端口號(hào),這里的端口號(hào)必須和服務(wù)器端打開(kāi)的端口號(hào)相同,如果不同,那么則無(wú)法實(shí)現(xiàn)數(shù)據(jù)的發(fā)送和接收,有了Socket示例對(duì)象后,我們需要在客戶端創(chuàng)建輸出流來(lái)向服務(wù)器端輸出數(shù)據(jù),scoketCli中有g(shù)etOutputStream()的方法來(lái)獲取輸出流,OutputStream oStream=socketCli.getOutputStream(),同理,如果我們的服務(wù)器會(huì)承受比較大的壓力的時(shí)候,我們可以使用PrintWriter來(lái)包裝該輸出流,PrintWriter writer=new PrintWriter(oStream),最后通過(guò)writer對(duì)象的write方法來(lái)將要發(fā)送的數(shù)據(jù)發(fā)送出去,這樣服務(wù)器端才能接收到客戶端發(fā)送的數(shù)據(jù),值得注意的是,無(wú)論是服務(wù)器端還是客戶端,我們都必須是關(guān)閉相關(guān)的資源,因?yàn)槿绻麤](méi)有及時(shí)的關(guān)閉,服務(wù)器可能會(huì)出現(xiàn)莫名其妙的錯(cuò)誤。

在編寫(xiě)好代碼后,我們需要注意幾點(diǎn),因?yàn)檫@是服務(wù)端和客戶端的交互,所以首先我們?cè)谶\(yùn)行的時(shí)候必須先開(kāi)啟服務(wù)器端,就像你取錢(qián)的時(shí)候,肯定是要先有銀行的,當(dāng)然,運(yùn)行服務(wù)器的時(shí)候,端口號(hào)如果被占用的話,系統(tǒng)會(huì)提示端口被占用的信息,此時(shí)你需要使用一個(gè)另外的端口號(hào),而客戶端中,上面的代碼因?yàn)槭褂玫氖潜緳C(jī),所以IP地址設(shè)置為127.0.0.1,如果你是連接其他電腦,那么只需要將該IP地址修改即可。

五、結(jié)論

從上面的代碼我們可以得到下面的結(jié)論,在我們開(kāi)啟服務(wù)端,并監(jiān)聽(tīng)了指定的端口,那么如果有客戶端連接,通過(guò)java的各種手段,服務(wù)器端就可以獲取到客戶端發(fā)送過(guò)來(lái)的數(shù)據(jù),從中我們也應(yīng)該知道了所謂的TCP和IP以及端口號(hào)的使用,很多東西也許看上去生澀難懂,但是只要我們實(shí)際的動(dòng)手去操作了,特別是編程,那么就會(huì)很容易的去理解。當(dāng)然,上面只是一個(gè)很小的例子,實(shí)際的開(kāi)發(fā)中會(huì)更加的困難,但是只要我們掌握了基本的知識(shí)點(diǎn),那么就可以在實(shí)際的開(kāi)發(fā)中一點(diǎn)一點(diǎn)的去學(xué)習(xí),從而達(dá)到更高的一個(gè)水平。

【作者簡(jiǎn)介】

陶艷芳(1994—),女,漢族,湖南人,邵陽(yáng)學(xué)院魏源國(guó)際學(xué)院2013級(jí)通信工程專業(yè)在讀。

主站蜘蛛池模板: 国产午夜不卡| 欧美三级日韩三级| 精品福利视频导航| 成人午夜亚洲影视在线观看| 噜噜噜久久| 国产91透明丝袜美腿在线| 亚洲中字无码AV电影在线观看| 亚洲男人的天堂在线观看| 亚洲视频在线网| 日本精品影院| 日韩大片免费观看视频播放| 日本在线免费网站| 国产无套粉嫩白浆| 亚洲人成影院午夜网站| 亚洲AV无码一区二区三区牲色| 国产精品亚欧美一区二区| 久爱午夜精品免费视频| 国模极品一区二区三区| 伊人久久综在合线亚洲2019| 视频二区中文无码| 国产精品夜夜嗨视频免费视频| 色综合婷婷| 99在线国产| 午夜在线不卡| 91福利免费| 国产天天射| 最新精品久久精品| 亚洲人成网站日本片| 婷婷色在线视频| 久久精品国产亚洲麻豆| 国产一级妓女av网站| 亚洲欧洲日韩综合色天使| 最新日本中文字幕| 免费国产高清视频| 五月婷婷亚洲综合| 亚洲无限乱码| 国产精品福利在线观看无码卡| 无码精品一区二区久久久| 免费大黄网站在线观看| 久久综合干| 亚洲一区免费看| 亚洲第一极品精品无码| 不卡网亚洲无码| 久久久久久国产精品mv| 久久成人国产精品免费软件| 无码专区国产精品一区| 国产小视频在线高清播放 | 伊人查蕉在线观看国产精品| 四虎永久免费网站| 国产日本一区二区三区| 97无码免费人妻超级碰碰碰| 五月丁香伊人啪啪手机免费观看| 538国产在线| 91精品日韩人妻无码久久| 国产欧美在线观看一区| v天堂中文在线| 国产a在视频线精品视频下载| 亚洲成人在线网| 毛片免费网址| 亚洲天堂日韩在线| 久久免费精品琪琪| 综合色亚洲| 在线不卡免费视频| 美女啪啪无遮挡| 日本www在线视频| 99热6这里只有精品| 在线国产三级| 国产精品尹人在线观看| 国产91精品久久| 婷婷色一二三区波多野衣| 91啪在线| 欧美国产综合色视频| 国产成a人片在线播放| 91免费国产在线观看尤物| 精品夜恋影院亚洲欧洲| 日本免费一级视频| 亚洲人成影院在线观看| 国产在线拍偷自揄观看视频网站| 激情午夜婷婷| 色网在线视频| 亚洲中文久久精品无玛| 亚洲国产日韩欧美在线|