博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[JavaME]手机申请移动分配的动态IP(2)?
阅读量:5883 次
发布时间:2019-06-19

本文共 2114 字,大约阅读时间需要 7 分钟。

[JavaME]手机申请移动分配的动态IP2?

先用ServerSocketConnection.open然后向某服务器询问手机自己的IP

       Hi,继续上回的讨论《》。

       上回说到申请动态IP的调试顺序可能反了,经过今天的测试,应该是我后面谈到的顺序,而且其中有一步很关键。

总之,每次在真机Nokia7610上测试,通过

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

                                          ":" + ssc.getLocalPort();

得到的Socket地址每次都是10.16.195.219之类的;同时服务器看到的手机访问IP地址都不一样,比如:

211.136.72.122

211.136.74.24

211.136.74.8;

等等。当然,这个地址会不会还是移动自己的几个固定IP。如果真的是这样,不知道端口能否映射过去?比如我访问211.136.72.1228110端口,是否能映射到10.16.195.219:8110端口呢?这是一个未知数。

 

我的Internet服务器上部署了一个很简单的asp页面,用来查看浏览此页面的手机的客户端IP地址。

用下面的asp代码试图得到客户端的IP

<%

    '正常情况Request.ServerVariables ("REMOTE_ADDR")就能取得客户端的IP地址,

 但如果客户端是使用代理服务器来访问,

    '那取到的就是代理服务器的 IP 地址,而不是真正的客户端 IP 地址,

 要想透过代理服务器

    '取得客户端的真实IP地址,就要使用

    'Request.ServerVariables("HTTP_X_FORWARDED_FOR")来读取,

 但是需要注意的是:

    '如果客户端没有通过代理服务器来访问,

那么用 Request.ServerVariables ("HTTP_X_FORWARDED_FOR")

    '取到的值将是空的。

Ip_address = Request.ServerVariables ("HTTP_X_FORWARDED_FOR")

        If Ip_address = "" Then

           Ip_address= Request.ServerVariables ("REMOTE_ADDR")

        end if

        Response.Write "Client IP Address=" & Ip_address

%>

 

 

下面给出具体的思路以及代码:

首先,我们还是利用

用下面的代码可以得到一个socket 动态IP

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

ServerSocketConnection ssc = null;

try

{

              

         // 先去访问网站,从而争取获得一个外部IP地址,而不是127.0.0.1的

         OutboundConnection(m_sInternetUrl);

     //Open the connection.

     ssc =

        (ServerSocketConnection) Connector.open(url);

}

来试图“get the dynamically assigned address from the getLocalAddress() and getLocalPort() methods”。

这是我们起的第一个线程ThreadRegisterIP,这之后,ThreadRegisterIP可以通过PushRegistry.registerConnection来注册监听;也可以调用(SocketConnection) ssc.acceptAndOpen();等候其他人来访问这个socket端口,这样会导致线程ThreadRegisterIP处于listen状态。

特别值得关注的一点是,在(ServerSocketConnection) Connector.open(url)之前,我发现必须先去用HttpConnection看看一个Internet网站,然后再来ServerSocketConnection.open,这样才能够正确拿到socket://10.16.195.219:8110。不这么做,就会得到socket://127.0.0.1:8110这种地址。

ServerSocketConnection之后呢,我们另外起一个ThreadAskServerIP线程,它呢,发送HttpConnection.GET请求给我的服务器网页,这个网页会告诉我服务器看到的IP地址是什么。我把这个IP地址显示在midlet上。

 

上面的代码可以从

下载;

安装的jar包从

下载。

本文属于讨论稿,提供的仅仅是建议和测试意见。

本文还可以从

 得到最新稿。

 

在现实测试中,每次这个IP地址都不一样。到底能不能通过这个IP地址找到手机,有待研究。

郑昀@ultrapower

类别

编写日期

Keyword: Mobile dynamicIP j2me midp ServerSocketConnection

讨论稿

2005119日星期三

 

转载地址:http://rwtix.baihongyu.com/

你可能感兴趣的文章
c语言全局变量和局部变量问题汇总
查看>>
scott权限
查看>>
Shell数值、字符串比较
查看>>
远程调用相关技术
查看>>
和Timesten有个约会--Timesten技术专栏系列(一)
查看>>
Windows 和 Linux下使用socket下载网页页面内容(可设置接收/发送超时)的代码
查看>>
系统架构设计师考试大纲
查看>>
XMPP协议介绍
查看>>
学习 TList 类的实现[2]
查看>>
BIND_MISMATCH导致过多VERSION COUNT的问题
查看>>
五个你必须知道的javascript和web debug技术
查看>>
Uva----------(11078)Open Credit System
查看>>
为什么做java的web开发我们会使用struts2,springMVC和spring这样的框架?
查看>>
.net Framework各个版本之间的发展
查看>>
什么是Activity
查看>>
格式化输入输出
查看>>
[Hibernate] - Criteria Select
查看>>
Perl的debug小技巧
查看>>
2015第33周三
查看>>
linux c正则
查看>>