網絡通信項目總結之一

      與其說是項目總結,到不如說是反思總結。總結這類東西,必須有感,真情實感,不管是項目總結還是反思總結,亦或是學習總結,工作總結等等。親身經歷,有感而發才行,寫總結應如寫隨筆,隨意而不可隨便,筆隨心動,心到筆隨,這是我對隨筆這一文體的精髓總結。我想借用來描述總結的精髓,也不爲過吧。     

      學習通信階段也有十天了,本來說是兩三天一總結,可到現在一篇都沒寫,實在是有些慚愧啊。遲遲未寫總結,說來原因也很簡單,自然有沒時間之類的藉口,但是關鍵還是對技術的瞭解和掌握不夠,就是我前面所說的感不夠。話說很多理科生在邏輯分析上佔優,在表達上卻不及文科生。包括口頭表達和文字表達。所以更是要加強這方面的訓練。像演講,總結報告等都是很好的鍛鍊形式。不敢說我的表達能力有多強,起碼能讓別人明白我的意思。另一方面,其實想說我還是有點文科生的潛質的。詩詞歌賦都難不倒我,卻偏偏被幾行代碼搞懵了。

      前面兩段算是發點小小的感慨,技術博客,總歸是要講點與技術相關的東西,下面就簡單總結一下這些天來對通信這一塊的理解和感悟。雖說基本是抄書上的代碼,但收穫總是有的,所謂“熟讀唐詩三百首,不會作詩也會吟”嘛,自己寫固然重要,但是不會的時候也需要借鑑,個人認爲,抄代碼能是能變技術牛人的,只是抄的不夠罷了,要能抄個幾十萬幾百萬行的代碼,那麼厚積薄發,你自己寫代碼的水平也會有很大的提高。但是,抄的再多,終究還是要自己會寫才行。

      網絡通信,我們通常想到的是QQ,飛信,MSN等等,而我們現在要做的,只是一個初步的聊天工具。說起來,這部分的新內容也不是很多,最主要的就是一個Socket類的使用。

基本流程:第一步是創建一個java.net.ServerSocket對象,即服務器,代碼如下

ServerSocket server = new ServerSocket(9090);

第二步等待客戶機來連接,客戶機進入後,生成一個Socket對象。服務器對象有個accept()的方法,這個方法是阻塞的,直到有一個客戶機對象連接上來,纔會返回一個Socket對象。

java.net.Socket client = server.accept();

第三步是從Socket連接對象上調用方法得到輸入輸出流。

java.net.Socket client = server.accept();

OutputStream out = client.getOutputStream();

InputStream ins = client.getInputStream();

第四步就是使用輸入輸出流對象進行通信數據的讀寫:從輸入流中讀取數據,向輸出流中寫入數據。讀到的數據,即是客戶機發來的數據;寫出的數據,就會發送給客戶機!代碼如下:

String s = "你好!\r\n";

byte[] data = s.getBytes();

out.write(data);

out.flush();

client.close();

第五步,將代碼完整的集成起來,就可以調試了。打開命令行,執行telnet命令,本地IP可以用localhost代替,完整的輸入即爲C:\>telnet localhost 9090。這樣就實現了最基本的網絡通信。當然這是最簡單的版本,後續的還有更多改進的地方。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章