本文共 2114 字,大约阅读时间需要 7 分钟。
[JavaME]手机申请移动分配的动态IP(2)?
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.122的8110端口,是否能映射到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 | 讨论稿 | 2005年11月9日星期三 |
转载地址:http://rwtix.baihongyu.com/