amp@java

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            99 隨筆 :: 0 文章 :: 228 評論 :: 0 Trackbacks
          mars課程里關于Socket通信那一課說那些程序只能在真機上運行,模擬器模擬不了,實際上是可以的。
          Android模擬器是通過一個類似路由器的虛擬網絡層與電腦相連,可以看作模擬器是處于“內網”當中,每個模擬器都有自己的虛擬路由器,而且虛擬路由器的地址總是10.0.2.1,在模擬器看來,電腦的地址是10.0.2.2,模擬器自己的地址是10.0.2.15,無論你啟動多少個模擬器,對于模擬器來說都是這樣的地址,模擬器之間不能直接通信。
          啟動模擬器的時候,電腦會給模擬器分配兩個端口,通過這兩個端口,電腦就能操作模擬器。第一個啟動的模擬器的端口是5554和5555,第二個是5556和5557,以此類推,最多可以同時啟動32個模擬器。第一個端口(偶數端口)可以接受telnet連接,對模擬器進行設置,第二個端口(奇數端口)則接受adb連接,可以用來調試。第一個端口可以在模擬器窗口的標題欄看到,如下圖所示:

          5554表示端口號,t表示模擬器名稱。
          實際上,這些端口也是電腦監聽的端口,在電腦上通過netstat可以看到本機正在監聽這些端口,因此通過telnet localhost 5554就能連上第一臺模擬器,連上之后通過help命令可以查看操作幫助。
          為了實現電腦和模擬器上的android程序進行socket通信,需要把程序開啟的端口通過端口映射設置到電腦上,這跟家里的路由器端口映射概念是一樣的。telnet到模擬器之后,通過
          redir add tcp:1234:1234
          就能把模擬器上的1234端口映射到電腦上,第一個表示電腦端口,第二個表示模擬器程序要使用端口,這兩個數字可以相同也可以不同,要映射udp端口就把tcp改為udp即可
          redir add udp:1234:1234
          這樣一來,當模擬器的程序打開1234端口時,在電腦上也打開了對應的端口,只要通過電腦連接127.0.0.1的對應端口,就連上了模擬器的程序端口,就可以通過電腦上的client向模擬器的server發送數據,不需要通過真機運行。
          如果要讓第一個模擬器向第二個模擬器發送數據,也可以把第二個模擬器的端口映射到電腦上,然后在第一個模擬器程序中向10.0.2.2的對應端口發送數據即可。


          模擬器還有一個很有意思的功能,每個模擬器默認的電話號碼就是它的第一個端口號,例如開了兩個模擬器,第一個撥打5556,第二個就會顯示5554來電,還能接通,發短信也可以,這樣就能模擬電話和短信功能。

          詳細的信息可以看Dev Guide的模擬器部分:http://developer.android.com/guide/developing/devices/emulator.html
          posted on 2012-02-24 10:37 amp@java 閱讀(2420) 評論(0)  編輯  收藏 所屬分類: Android
          主站蜘蛛池模板: 江阴市| 扎鲁特旗| 高要市| 山阴县| 七台河市| 海兴县| 武邑县| 修文县| 长阳| 灵璧县| 万年县| 青神县| 稻城县| 深泽县| 高邑县| 沁源县| 新河县| 维西| 江都市| 靖江市| 铜山县| 出国| 兴仁县| 靖西县| 华安县| 鲜城| 恩施市| 清流县| 镇康县| 北票市| 察隅县| 新干县| 皋兰县| 图们市| 资讯 | 桐城市| 邓州市| 龙泉市| 扎囊县| 沧州市| 双鸭山市|