Posted on 2005-11-16 16:29
讓變化成為計劃的一部分 閱讀(324)
評論(0) 編輯 收藏 所屬分類:
J2ME
獲取IP后是否可以和它通訊呢?
Hi,繼續上回的討論《[JavaME]手機是否能夠申請到動態IP[2]?》。
上回說到申請動態IP是可以了,并且準備好了一個線程等候在socket://10.16.195.219:8110之類的端口上監聽。
這次把代碼修改了,完成了監聽線程之后,就相當于起了一個Socket Server,一旦有人要連接它,就回復一個字符串說“God bless you!You are the No.”后面加上是第幾位訪問者的序號。
菜單中也相應加入了一個命令“聯系ServerSocket”,就是向界面中的"ServerSocket為:"編輯框所指明的Server發起Socket連接請求,看能否得到回復;如果有回復,就輸出到屏幕上。
源代碼可以從
http://www.cnblogs.com/Files/zhengyun_ustc/GetDynamicIP.withServerSocketClient.rar獲得。
發布包可以從
http://www.cnblogs.com/Files/zhengyun_ustc/GetDynamicIP.withServerSocketClient-deployed.rar獲得。
實際在手機上測試結果并不理想,
首先,我們點擊“注冊動態IP”命令,
得到了一個ServerSocket端口號,將被更新到"ServerSocket為:"編輯框。
然后,選擇“聯系ServerSocket”命令,后臺線程將用
用下面的代碼可以得到ServerSocket 服務的應答 |
socketConn = (SocketConnection) Connector.open(hostToPostTo);
// 從socketConn取得一個 DataInputStream
dis = new DataInputStream( socketConn.openInputStream() );
// 從服務器上取回響應
int ch;
while ( ( ch = dis.read() ) != -1 )
{
responseMessage.append( (char) ch );
};//結束while
////////////////////////////////////////////
// 告訴控制器url
Object[] argvs = {responseMessage.toString()};
m_controller.handleEvent(GUIController.EventID.EVENT_SOCKETSERVER_DISPLAYIP,
argvs);
//////////////////////////////////////////// |
但是,始終沒有應答返回。
當然,在PC機上模擬器測試結果自然能夠顯示ServerSocket服務器應答,因為那上面的IP是本機IP。如下圖所示:
本文屬于討論稿,提供的僅僅是測試意見。
本文還可以從
http://www.cnblogs.com/zhengyun_ustc/archive/2005/11/16/ServerSocketConnection3.html 得到最新稿。
鄭昀@ultrapower |
類別 |
編寫日期 |
Keyword: Mobile dynamicIP j2me midp ServerSocketConnection |
討論稿 |
2005年11月16日星期三 |