讓變化成為計劃的一部分

          歡迎大家探討本Blog涉及的所有軟件課題。我的Google Talk ID:zhengyun(at)gmail.com。

          我最希望軟件帶給用戶的感受是:美好的體驗、舒適感、簡約、干凈...

          posts - 32, comments - 8, trackbacks - 0, articles - 0
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          [JavaME]手機是否能夠申請到動態IP?

          ServerSocketConnection?

          http://www.j2medev.com/bbs/dispbbs.asp?boardid=21&id=4099&star=1#2083 ,這里是原始討論貼。

           

          這里我們給出一個思路:可以先這樣,手機先訪問一個固定的網址,然后就會被分配一個IP,這就是手機用來和外界聯系的IP了。

          Efei說,剛才測試了下,使用一段文檔上提供的代碼,也就那兩三句話

          try{
                ServerSocketConnection scs = (ServerSocketConnection) Connector.open("socket://:1234");
                frmMain.append("ip:" + scs.getLocalAddress());
              }
              catch (Exception e) {}

          取得了一個IP10.66.7.28。

          這個IP外部網絡是無法訪問的,換言之,內部網絡可以訪問。

          所以只要在移動的機房有服務器,你可以訪問了

          但是還有個問題,這個IP是動態變化的,所以至少需要客戶端先訪問服務器一下,讓服務器知道你現在的IP。

          確實如efei所說,我在手機上測試結果也是拿到了socket://10.15.134.128:4234,看來是沒辦法訪問的了。但是我覺得雖然我們的位于Internet的服務器無法訪問,但是也許另一部手機是可以訪問這個地址的,所以手機的p2p理論上也許是可行的。

          我的測試代碼在http://www.cnblogs.com/Files/zhengyun_ustc/GetDynamicIP.rar下載,安裝的jar包在http://www.cnblogs.com/Files/zhengyun_ustc/GetDynamicIP-deployed.rar下載,

          Nokia7610測試通過。

          朋友們也可以自己在真機上試驗下這個程序。

          用下面的代碼可以得到一個socket 動態IP

           

          //Use an unrestricted filter.

          String filter = "*";

          String url = "socket://:" + m_sSocketPort;

          ServerSocketConnection ssc = null;

           

          try

          {

               //Open the connection.

               ssc =

                  (ServerSocketConnection) Connector.open(url);

               System.out.println("/* Already Open the connection!");

                 

                //Discover the system-assigned port.

               url = "socket://:" + ssc.getLocalPort();

                //Register the connection now. The AMS will

                //remember the registered URL even when the MIDlet

                //is not active.

               PushRegistry.registerConnection(url,

                       m_sMidletClassName, filter);

               System.out.println("/* Already Register the connection now!" +

                       url);

                //Now publish the push URL. We can use an HTTP

                //POST or a socket or datagram for this.

               String purl;

               purl = "socket://" + ssc.getLocalAddress() +

                  ":" + ssc.getLocalPort();

               publishInboundConnection(purl, m_sMidletClassName);

          }

           

           

           

          主站蜘蛛池模板: 香港 | 吉水县| 洞头县| 香格里拉县| 牟定县| 武隆县| 陆丰市| 滕州市| 墨玉县| 开原市| 南郑县| 安远县| 临高县| 华坪县| 阜新| 农安县| 汉寿县| 兴文县| 合江县| 炉霍县| 定边县| 鄂托克前旗| 上虞市| 宜兴市| 沙河市| 丰原市| 余庆县| 昌乐县| 廊坊市| 陆良县| 台山市| 林口县| 同心县| 邵阳市| 德惠市| 固镇县| 内江市| 靖远县| 太仆寺旗| 沈阳市| 原平市|