學了不少基礎的知識,拼乙個完整點的小例子吧!
目標:完成乙個與pc
機互發訊息的聊天程式。
。我們就想試一試用socket
來實現雙機對聯。先試通socket
通訊,pc
機當伺服器,手機當客戶端。
通常,我們寫pc
的socket
程式時,了解到,伺服器端是採用socket
監聽程式來監聽網路的某個埠,當客戶端連入時,伺服器監聽程式返回乙個socket
物件來收發訊息。客戶端要連線到伺服器端時,需要知道對方的ip
和埠。在本例項中,伺服器端我們採用c#
來實現。
c#
服務端l
監聽服務:
ipaddress ip = ipaddress.parse("127.0.0.1");
mylist = new tcplistener(ip,8001); //8001
為埠號
mylist.start(); l
開始監聽:
tcpclient client = mylist.accepttcpclient(); //
程式將會卡住,是同步執行不是非同步。一旦客戶端接入時,建立物件,繼續執行。
l傳送訊息:
streamwriter writer = new streamwriter(client.getstream());
writer.write(context + (char)13 + (char)10);
writer.flush();
注意:在傳送的訊息內容中,結尾必須要加上回車換行。如是不加,android
中接收會出錯(
會報bad package)
。具體原來我也不清楚l
l接收訊息:
byte readbuffer = new byte[read_buffer_size];
this.client.getstream().beginread(readbuffer, 0, read_buffer_size, new asynccallback(streamreceiver), null);
int bytesread = client.getstream().endread(ar);
retstring= encoding.ascii.getstring(readbuffer, 0, bytesread - 1);
android
客戶端l
連線服務
socket socket = new socket("10.0.2.2", 8001);
在模擬器中,連線到pc
端採用的ip
是"10.0.2.2"
,埠用伺服器端監聽的埠。
l傳送訊息
dataoutputstream dos=new dataoutputstream(socket.getoutputstream());
dos.write(str.getbytes()); l
接收訊息
bufferedreader mreader = new bufferedreader(new inputstreamreader(socket.getinputstream(), "utf-8"),8192);
string strret = mreader.readline(); //
同樣,執行讀時,程式也會卡住,等待資訊。
l斷開連線
socket.shutdowninput(); //
需要調此方法,不然mreader.readline
還傻傻掛著。
socket.shutdownoutput();
socket.close();
在編寫通訊程式時,由於讀訊息都是同步的,所以一般我們會採用執行緒來處理。
這章就寫到這裡,簡單的通訊也就跑起來了,下次再把介面整得好看一點。
自己寫個小總結
從入行as3到現在差不多有1年的時間了,從最開始的懵懵懂懂,看著殿堂之路都能睡著的狀態到現在已經可以自己寫一些 模組了。今天正好有時間做個總結,並規劃一下將來需要發展的方向。隨著頁遊的市場越來越火爆,對as的程式設計師的需求也越來越多,技術要求也越來越高。針對flash的技術來說,比較重要的幾個方面...
Android基礎學習例項
一 fragmentdemo1 中包括 1 fragment的使用 2 getlayoutinflater inflate的使用 3 對於radio 的使用 4 對於布局管理器中的一些屬性測試 5 1 控制項中顯示html 2 控制項中文字樣式的處理 6 日期 和時間控制項的使用 7 對話方塊測試 ...
寫個小程式01 註冊微信小程式
出於興趣和學習目的,我想自己做乙個基於 子彈筆記 bullet journal 的小程式。由於個人開發經驗很有限,只在課程作業中寫過 web 前端,所以也不知道多久能寫出來 逃 因此想通過部落格記錄一下開發過程 學習資料 踩過的坑等等。本系列文章主要計畫用於個人學習總結,如果恰好對你有幫助那真是太好...