[JavaME]手机申请移动分配的动态IP(2)?
Hi,继续上回的讨论《[JavaME]手机是否能够申请到动态IP?》。
上回说到申请动态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地址。
正常情况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
%
来试图“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上。
上面的代码可以从
http://files.cnblogs.com/zhengyun_ustc/GetDynamicIP-withAskServer.rar
下载;
安装的jar包从
http://files.cnblogs.com/zhengyun_ustc/GetDynamicIP-deployed-withAskServer.rar下载。
本文属于讨论稿,提供的仅仅是建议和测试意见。
本文还可以从
http://www.cnblogs.com/zhengyun_ustc/archive/2005/11/09/ServerSocketConnection2.html 得到最新稿。
在现实测试中,每次这个IP地址都不一样。到底能不能通过这个IP地址找到手机,有待研究。
【C#】 MVC4 开发小程序-实现人脸识别-本地和手机预览使用IP测试 小程序Camera组件拍照上传图片到指定的服务器(本地或者外网的IP服务器),然后C# MVC后台调用百度人脸识别接口,实现人脸识别功能呢
作为应用层开发人员,接触最多的网络协议通常都是传输层的TCP(与之同处一层的另一个重要协议是UDP协议),但对于IP协议,对于应用程序员来说更多的印象还是IP地址这个东西,再往深一点也就很难说的清楚。
如何申请iOS开发者证书/发布app到手机 申请iOS开发者证书 http://blog.csdn.net/htttw/article/details/7939405 如何向App Store提交应用 http://www.cocoachina.
郑昀 ☑移动数据业务 times;6年 ☑语义聚合 times;4年 ☑O2O times;5年的一个老兵。
相关文章
- 禁止单个IP或ip段访问
- OPPO手机怎么设置一个节日倒计时?用备忘录设置节日倒计时天数
- 便签纸到处都是?试试简单实用的手机便签吧
- OPPO手机生日倒计时怎么弄?便签怎么设置日期倒计时天数
- 微信小程序开发(八)获取手机ip地址
- 【原】[webkit移动开发笔记]之使用chrome进行手机开发
- java实现手机尾号评分
- Delphi XE之路(8)xe5 android 手机上使用sqlite
- 查看Android手机数据库
- Eureka客户端使用IP注册preferIpAddress和ip-address的区别
- QT仿手机滑动按钮效果
- 【CSS】开发者调试工具 ( 打开工具 | 设置工具显示位置 | 选择元素 | 查看手机版样式 | 开发者调试工具缩放 | 修改数值大小调试 | 查看 CSS 样式代码位置 )