`
leiyongping88
  • 浏览: 75957 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论
收藏列表
标题 标签 来源
手机程序获取手机号码
      手机程序获取手机号码

                                                    

key words:手机程序获取手机号码,wap获取手机号, android获取手机号,mobile获取手机号,symbian获取手机号,blackberry获取手机号,手机程序获取终端信息,wap获取终端信息, android获取终端信息,mobile获取终端信息,symbian获取终端信息,blackberry获取终端信息

一、适用的领域

wap平台、android系统、mobile系统、symbian系统、blackberry系统等相关手机开发平台均可以通过以下方法;

二、重要注意事项

在开发中还要配合对网络技术的了解,具体网络知识,待我查些资料,有结果发布上来与朋友们共享;

三、总结

笔者亲自开发编写测试代码,对三大运营商的WAP网关进行测试,发现了些问题,但不方便透露,有兴趣的可以加我的QQ\MSN 一起研究;

 

 

四、环境、开发语言及代码描述

 

(1)开发语言适用:ASP\JSP\PHP等等相关语言

(2)笔者适用JSP编写了一个DEMO页

(3)运行服务器TOMCAT7.0

(4)工具UE\记事本\Dreamwave

 

 (5)代码描述

 

取手机号码使用下面方法(获取手机号码)

 

String   Mobile_GPRS   =   request.getHeader("X-up-calling-line-id");  

String   Mobile_CDMA   =   request.getHeader("x-up-subno");  
String   Mobile_INFO     =   request.getHeader("x-network-info");  
String   Mobile_DEVI     =   request.getHeader("deviceid");  

 

查询到手机终端信息(获取终端信息)

Enumeration headers = request.getHeaderNames();
 
 while(headers.hasMoreElements()) {
  
  String head = (String)headers.nextElement();
 
  System.out.println(head+":"+request.getHeader(head)); }

 

在配合这个号码使用的地方,我们完成可以使用URL等传参模式,将用到手机号码的页面或者功能传参,来配合使用
TCP/IP
TCP/IP不是一个协议,而是一个协议族的统称。里面包括了IP协议,IMCP协议,TCP协议,以及我们更加熟悉的http、ftp、pop3协议等等。电脑有了这些,就好像学会了外语一样,就可以和其他的计算机终端做自由的交流了。 

TCP/IP(TransmissionControlProtocol/InternetProtocol的简写,中文译名为传输控制协议/互联网络协议)协议是Internet最基本的协议,简单地说,就是由底层的IP协议和TCP协议组成的。TCP/IP协议的开发工作始于70年代,是用于互联网的第一套协议。
1.1 TCP/IP参考模型
TCP/IP协议的开发研制人员将Internet分为五个层次,以便于理解,它也称为互联网分层模型或互联网分层参考模型,如下表:

 




  ·物理层:对应于网络的基本硬件,这也是Internet物理构成,即我们可以看得见的硬件设备,如PC机、互连网服务器、网络设备等,必须对这些硬件设备的电气特性作一个规范,使这些设备都能够互相连接并兼容使用。

  ·网络接口层:它定义了将数据组成正确帧的规程和在网络中传输帧的规程,帧是指一串数据,它是数据在网络中传输的单位。

  ·互联网层:本层定义了互联网中传输的“信息包”格式,以及从一个用户通过一个或多个路由器到最终目标的"信息包"转发机制。

  ·传输层:为两个用户进程之间建立、管理和拆除可靠而又有效的端到端连接。

  ·应用层:它定义了应用程序使用互联网的规程。
1. 2 网间协议IP
  Internet上使用的一个关键的底层协议是网际协议,通常称IP协议。我们利用一个共同遵守的通信协议,从而使Internet成为一个允许连接不同类型的计算机和不同操作系统的网络。要使两台计算机彼此之间进行通信,必须使两台计算机使用同一种"语言"。通信协议正像两台计算机交换信息所使用的共同语言,它规定了通信双方在通信中所应共同遵守的约定。
计算机的通信协议精确地定义了计算机在彼此通信过程的所有细节。例如,每台计算机发送的信息格式和含义,在什么情况下应发送规定的特殊信息,以及接收方的计算机应做出哪些应答等等。
网际协议IP协议提供了能适应各种各样网络硬件的灵活性,对底层网络硬件几乎没有任何要求,任何一个网络只要可以从一个地点向另一个地点传送二进制数据,就可以使用IP协议加入Internet了。
如果希望能在Internet上进行交流和通信,则每台连上Internet的计算机都必须遵守IP协议。为此使用Internet的每台计算机都必须运行IP软件,以便时刻准备发送或接收信息。
IP协议对于网络通信有着重要的意义:网络中的计算机通过安装IP软件,使许许多多的局域网络构成了一个庞大而又严密的通信系统。从而使Internet看起来好像是真实存在的,但实际上它是一种并不存在的虚拟网络,只不过是利用IP协议把全世界上所有愿意接入Internet的计算机局域网络连接起来,使得它们彼此之间都能够通信。
1.3 传输控制协议TCP
尽管计算机通过安装IP软件,从而保证了计算机之间可以发送和接收数据,但IP协议还不能解决数据分组在传输过程中可能出现的问题。因此,若要解决可能出现的问题,连上Internet的计算机还需要安装TCP协议来提供可靠的并且无差错的通信服务。
TCP协议被称作一种端对端协议。这是因为它为两台计算机之间的连接起了重要作用:当一台计算机需要与另一台远程计算机连接时,TCP协议会让它们建立一个连接、发送和接收数据以及终止连接。
传输控制协议TCP协议利用重发技术和拥塞控制机制,向应用程序提供可靠的通信连接,使它能够自动适应网上的各种变化。即使在Internet暂时出现堵塞的情况下,TCP也能够保证通信的可靠。
众所周知,Internet是一个庞大的国际性网络,网路上的拥挤和空闲时间总是交替不定的,加上传送的距离也远近不同,所以传输数据所用时间也会变化不定。TCP协议具有自动调整"超时值"的功能,能很好地适应Internet上各种各样的变化,确保传输数值的正确。
因此,从上面我们可以了解到:IP协议只保证计算机能发送和接收分组数据,而TCP协议则可提供一个可靠的、可流控的、全双工的信息流传输服务。

  综上所述,虽然IP和TCP这两个协议的功能不尽相同,也可以分开单独使用,但它们是在同一时期作为一个协议来设计的,并且在功能上也是互补的。只有两者的结合,才能保证Internet在复杂的环境下正常运行。凡是要连接到Internet的计算机,都必须同时安装和使用这两个协议,因此在实际中常把这两个协议统称作TCP/IP协议。
1. 4 IP地址及其分类
在Internet上连接的所有计算机,从大型机到微型计算机都是以独立的身份出现,我们称它为主机。为了实现各主机间的通信,每台主机都必须有一个唯一的网络地址。就好像每一个住宅都有唯一的门牌一样,才不至于在传输数据时出现混乱。
Internet的网络地址是指连入Internet网络的计算机的地址编号。所以,在Internet网络中,网络地址唯一地标识一台计算机。
我们都已经知道,Internet是由几千万台计算机互相连接而成的。而我们要确认网络上的每一台计算机,靠的就是能唯一标识该计算机的网络地址,这个地址就叫做IP(InternetProtocol的简写)地址,即用Internet协议语言表示的地址。
目前,在Internet里,IP地址是一个32位的二进制地址,为了便于记忆,将它们分为4组,每组8位,由小数点分开,用四个字节来表示,而且,用点分开的每个字节的数值范围是0~255,如202.116.0.1,这种书写方法叫做点数表示法。
IP地址可确认网络中的任何一个网络和计算机,而要识别其他网络或其中的计算机,则是根据这些IP地址的分类来确定的。一般将IP地址按节点计算机所在网络规模的大小分为A,B,C三类,默认的网络掩码是根据IP地址中的第一个字段确定的。
  1.A类地址
  A类地址的表示范围为:0.0.0.0~126.255.255.255,默认网络掩码为:255.0.0.0;A类地址分配给规模特别大的网络使用。A类网络用第一组数字表示网络本身的地址,后面三组数字作为连接于网络上的主机的地址。分配给具有大量主机(直接个人用户)而局域网络个数较少的大型网络。例如IBM公司的网络。
  2.B类地址
B类地址的表示范围为:128.0.0.0~191.255.255.255,默认网络掩码为:255.255.0.0;B类地址分配给一般的中型网络。B类网络用第一、二组数字表示网络的地址,后面两组数字代表网络上的主机地址。
  3.C类地址
  C类地址的表示范围为:192.0.0.0~223.255.255.255,默认网络掩码为:255.255.255.0;C类地址分配给小型网络,如一般的局域网和校园网,它可连接的主机数量是最少的,采用把所属的用户分为若干的网段进行管理。C类网络用前三组数字表示网络的地址,最后一组数字作为网络上的主机地址。

  实际上,还存在着D类地址和E类地址。但这两类地址用途比较特殊,在这里只是简单介绍一下:D类地址称为广播地址,供特殊协议向选定的节点发送信息时用。E类地址保留给将来使用。
连接到Internet上的每台计算机,不论其IP地址属于哪类都与网络中的其他计算机处于平等地位,因为只有IP地址才是区别计算机的唯一标识。所以,以上IP地址的分类只适用于网络分类。
在Internet中,一台计算机可以有一个或多个IP地址,就像一个人可以有多个通信地址一样,但两台或多台计算机却不能共用一个IP地址。如果有两台计算机的IP地址相同,则会引起异常现象,无论哪台计算机都将无法正常工作。
顺便提一下几类特殊的IP地址:
1. 广播地址目的端为给定网络上的所有主机,一般主机段为全0
2. 单播地址目的端为指定网络上的单个主机地址
3. 组播地址目的端为同一组内的所有主机地址
4. 环回地址127.0.0.1在环回测试和广播测试时会使用
1.5 子网的划分
若公司不上Internet,那一定不会烦恼IPAddress的问题,因为可以任意使用所有的IPAddress,不管是AClass或是BClass,这个时候不会想到要用SubNet,但若是上Internet那IPAddress便弥足珍贵了,目前全球一阵Internet热,IPAddress已经愈来愈少了,而所申请的IPAddress目前也趋保守,而且只有经申请的IPAddress能在Internet使用,但对某些公司只能申请到一个CCLass的IPAddress,但又有多个点需要使用,那这时便需要使用到Subnet,这就需要考虑子网的划分,下面简介Subnet的原理及如何规划。
1.5.1 Subnet Mask的介绍 
设定任何网路上的任何设备不管是主机、PC、Router等皆需要设定IPAddress,而跟随着IPAddress的是所谓的NetMask,这个NetMask主要的目的是由IPAddress中也能获得NetworkNumber,也就是说IPAddress和NetMask作AND而得到NetworkNumber,如下所示:
IPAddress
192.10.10.611000000.00001010.00001010.00000110
NetMask
255.255.255.011111111.11111111.11111111.00000000
AND
-------------------------------------------------------------------
NetworkNumber
192.10.10.011000000.00001010.00001010.00000000
NetMask有所谓的预设值,如下所示
ClassIPAddress范围NetMask
A 1.0.0.0-126.255.255.255255.0.0.0
B 128.0.0.0-191.255.255.255255.255.0.0
C 192.0.0.0-223.255.255.255255.255.255.0
在预设的NetMask都只有255的值,在谈到SubnetMask时这个值便不一定是255了。在完整一组CClass中如203.67.10.0-203.67.10.255NetMask255.255.255.0,203.67.10.0称之NetworkNumber(将IPAddress和Netmask作AND),而203.67.10.255是Broadcast的IPAddress,所以这两者皆不能使用,实际只能使用203.67.10.1--203.67.10.254等254个IPAddress,这是以255.255.255.0作NetMask的结果,而所谓SubnetMsk尚可将整组CClass分成数组NetworkNumber,这要在NEtMask作手脚,若是要将整组CCLass分成2个NetworkNumber那NetMask设定为255.255.255.192,若是要将整组CCLass分成8组NetworkNumber则NetMask要为255.255.255.224,这是怎麽来的,由以上知道NetworkNumber是由IPAddress和NetMask作AND而来的,而且将NetMask以二进位表示法知道是1的会保留,而为0的去掉

192.10.10.193--11000000.00001010.00001010.10000001
255.255.255.0--11111111.11111111.11111111.00000000
--------------------------------------------------------------
192.10.10.0--11000000.00001010.00001010.00000000
以上是以255.255.255.0为NetMask的结果,NetworkNumber是192.10.10.0,若是使用255.255.255.224作NetMask结果便有所不同
192.10.10.193--11000000.00001010.00001010.10000000
255.255.255.224--11111111.11111111.11111111.11100000
--------------------------------------------------------------
192.10.10.192--11000000.00001010.00001010.10000000
此时NetworkNumber变成了192.10.10.192,这便是Subnet。那要如何决定所使用的NetMask,255.255.255.224以二进位表示法为11111111.11111111.11111111.11100000,变化是在最後一组,11100000便是224,以三个Bit可表示2的3次方便是8个NetworkNumber
NetMask二进位表示法可分几个Network
255.255.255.011111111.11111111.11111111.000000001
255.255.255.128
11111111.11111111.11111111.100000002
255.255.255.192
11111111.11111111.11111111.110000004
255.255.255.224
11111111.11111111.11111111.111000008
255.255.255.240
11111111.11111111.11111111.1111000016
255.255.255.248
11111111.11111111.11111111.1111100032
255.255.255.252
11111111.11111111.11111111.1111110064
以下使用255.255.255.224将C Class203.67.10.0分成8组NetworkNumber,各个NetworkNumber及其BroadcastIPAddress及可使用之IPAddress序号NetworkNumberBroadcast可使用之IPAddress
(1)203.67.10.0--203.67.10.31
203.67.10.1--203.67.10.30
(2)203.67.10.32--203.67.10.63
203.67.10.33--203.67.10.62
(3)203.67.10.64--203.67.10.95
203.67.10.65--203.67.10.94
(4)203.67.10.96--203.67.10.127
203.67.10.97--203.67.10.126
(5)203.67.10.128--203.67.10.159
203.67.10.129--203.67.10.158
(6)203.67.10.160--203.67.10.191
203.67.10.161--203.67.10.190
(7)203.67.10.192--203.67.10.223
203.67.10.193--203.67.10.222
(8)203.67.10.224--203.67.10.255
203.67.10.225--203.67.10.254
可验证所使用的IPAddress是否如上表所示
203.67.10.115--11001011.01000011.00001010.01110011
255.255.255.224--11111111.11111111.11111111.11100000
--------------------------------------------------------------
203.67.10.96--11001011.01000011.00001010.01100000
203.67.10.55--11001011.01000011.00001010.00110111
255.255.255.224--11111111.11111111.11111111.11100000
--------------------------------------------------------------
203.67.10.32--11001011.01000011.00001010.00100000
其他的NetMask所分成的NetworkNumber可自行以上述方法自行推演出来。
1.5.2 Subnet的应用 
使用Subnet是要解决只有一组CClass但需要数个NetworkNumber的问题,并不是解决IPAddress不够用的问题,因为使用Subnet反而能使用的IPAddress会变少,Subnet通常是使用在跨地域的网络互联之中,两者之间使用Router连线,同时也上Internet,但只申请到一组CClassIPAddress,过Router又需不同的Network,所以此时就必须使用到Subnet,当然二网络间也可以RemoteBridge连接,那便没有使用Subnet的问题。
1.6 几个常用的程序
1.6.1 ping
  这个程序用来检测一帧数据从当前主机传送到目的主机所需要的时间。当网络运行中出现故障时,采用这个实用程序来预测故障和确定故障源是非常有效的。如果执行ping不成功,则可以预测故障出现在以下几个方面:网线是否连通,网络适配器配置是否正确,IP地址是否可用等;如果执行ping成功而网络仍无法使用,那么问题很可能出在网络系统的软件配置方面,ping成功只能保证当前主机与目的主机间存在一条连通的物理路径。它还提供了许多参数,如-t使当前主机不断地向目的主机发送数据,直到使用Ctrl-C中断;-n可以自己确定向目的主机发送的数据帧数等等。
  1.6.2 winipcfg
  它用来显示主机内IP协议的配置信息。它采用Windows窗口的形式显示具体信息。这些信息包括:网络适配器的物理地址、主机的IP地址、子网掩码以及默认网关等,还可以查看主机的相关信息如:主机名、DNS服务器、节点类型等。其中网络适配器的物理地址在检测网络错误时非常有用。
  1.6.3 tracert
  这个程序的功能是判定数据包到达目的主机所经过的路径、显示数据包经过的中继节点清单和到达时间。还可以使用参数-d决定是否解析主机名。
  1.6.4 netstat
  这个程序有助于我们了解网络的整体使用情况。它可以显示当前正在活动的网络连接的详细信息,如采用的协议类型、当前主机与远端相连主机(一个或多个)的IP地址以及它们之间的连接状态等。它提供的较为常用的参数是:-e用以显示以太网的统计信息;-s显示所有协议的使用状态,这些协议包括TCP、UDP和IP,一般这两个参数都是结合在一起使用的。另外-p可以选择特定的协议并查看其具体使用信息,-a可以显示所有主机的端口号,-r则显示当前主机的详细路由信息。  要运行以上这些程序,只要在DOS方式或Windows开始菜单的运行栏中以命令行的形式键入程序名即可。灵活使用这几个程序可以使你大体了解自己主机对网络的使用情况。

 

TCP/IP协议分层
提到协议分层,我们很容易联想到ISO-OSI的七层协议经典架构,但是TCP/IP协议族的结构则稍有不同。如图所示 

 
TCP/IP协议族按照层次由上到下,层层包装。最上面的就是应用层了,这里面有http,ftp,等等我们熟悉的协议。而第二层则是传输层,著名的TCP和UDP协议就在这个层次(不要告诉我你没用过udp玩星际)。第三层是网络层,IP协议就在这里,它负责对数据加上IP地址和其他的数据(后面会讲到)以确定传输的目标。第四层是叫数据链路层,这个层次为待传送的数据加入一个以太网协议头,并进行CRC编码,为最后的数据传输做准备。再往下则是硬件层次了,负责网络的传输,这个层次的定义包括网线的制式,网卡的定义等等(这些我们就不用关心了,我们也不做网卡),所以有些书并不把这个层次放在tcp/ip协议族里面,因为它几乎和tcp/ip协议的编写者没有任何的关系。发送协议的主机从上自下将数据按照协议封装,而接收数据的主机则按照协议从得到的数据包解开,最后拿到需要的数据。这种结构非常有栈的味道,所以某些文章也把tcp/ip协议族称为tcp/ip协议栈。

SVN 知识库 (转http://www.cnblogs.com/licheng/archive/2008/11/08/1329634.html) (转http://www.cnblogs.com/licheng/archive/2008/11/08/1329634.html)
SVN是CVS的下一个版本,主要用来进行版本控制,可以对程序代码,音频,视频以及图像文件等,做版本控制。

目录以及文件是Subversion中可以记录版本的对象。其主要工作原理如下图:
                   _ _ _ _ _ _ _ _ _ _
                  /                              /
                  |                               |
                  |      项目仓库            |
                  |                               |
                  /_ _ _ _ _ _ _ _ _ _/
                        /                  |
                       /     check in |
     check out /                     |
_ _ _ _ _ _ /_ _               _|_ _ _ _ _ _ _                   
/                         /             /                        /
|                          |            |                         |
|      工作拷贝       |            |        工作拷贝    |
|                          |            |                         |
/_ _ _ _ _ _ _   _/             /_ _ _ _ _ _ _ _/

分支,主干,合并,标签
创建一个分支或者标签时,采用一种"延迟拷贝"的技术,即只创建指向同一版本的链接,当其中某个文件有所改动时,再去复制那个文件或者目录。
一般地来讲,分支是用来做准备发布的,而不是并行开发。

1、创建一个项目仓库
svnadmin create /home/huzza/test_svn

2、import初始文件到项目仓库中
svn import -m source_file_path URL
本例 URL:file:///home/huzza/test_svn/sesame/trunk
file:// ------> 告诉svn是本地目录

3、checkout文件到本地目录
svn checkout(co) file:///home/huzza/test_svn/sesame/trunk sesame

4、检查文件状态或者日至
svn status [文件/目录]
svn log [文件/目录]
svn log -r6:8 [文件/目录]     查看版本6到版本8之间的日志

5、文件/目录比较(工作拷贝与项目创库中的比较)
svn diff [文件/目录]     或者      svn diff --rHEAD [文件/目录]     --rHEAD:表示最新版本

6、更新本地工作拷贝,提交工作修改
svn update(up) [文件/目录]       svn checkin(in) -m"comments" [文件/目录]
update时的一些文件标志:
     U ------ 表示文件被更新
     G ------ 表示项目创库中的文件和本地工作拷贝的文件合并到了一起
     C ------ 表示合并时,有冲突产生
     A ------ 新加入了一个文件
     D ------ 删除了一个文件
     ? ------ 表示该文件或者目录没有被svn管理
     M ------ 该文件被修改

7、冲突。当svn update时,如果存在某个文件存在冲突,打开冲突的文件,<<<<<<<< 和 >>>>>>>> 表明了冲突发生的地方。
当冲突发生时,如果想使用项目仓库中的版本,而放弃本地拷贝的修改,可以使用以下命令:
a、svn revert [冲突的文件/目录]
b、svn update [冲突的文件/目录]
(svn resolved [文件/目录] && svn updata [文件/目录],似乎也是ok的,需要confirm一下)
如果想保留本地工作拷贝的修改,而放弃项目仓库中版本的修改,可以如下:
a、cp 文件/目录.mine 文件/目录
b、svn resolved 文件/目录
c、svn ci -m "use my version please" 文件/目录
(在上面的三个步骤中,似乎不用做步骤a也可以达到目的)

8、使svn项目仓库联网
启动svn服务器:svnserve --daemon --root /home/huzza/test_svn
列服务器资源:svn list svn://192.168.0.4/sesame/trunk
出来后面的URL不同,其他操作的各部分均相同
svn+ssh 访问:svn list svn+ssh://192.168.0.4/sesame/trunk        (需要在服务器上支持ssh访问)

9、得到特定版本的工作拷贝
svn checkout -rVersionNum list svn://192.168.0.4/sesame/trunk butterfly
svn info butterfly     (查看当前版本拷贝的状态)

10、拷贝/移动文件
svn copy filename newfile
svn move oldfile newfile
svn ci -m "add or move some files" [修改文件所在的目录]      (这里确保服务器上也作跟本地拷贝相同的动作)

11、版本的符号
HEAD --------- 项目仓库中的最新版本
BASE --------- 工作拷贝的基准版本(也就是checkout出来时的版本)
COMMITTED ---- 最后一次checkin的版本
PREV --------- COMMITTED之前的一个版本

12、查找版本之间的差异
svn diff -r2:4 [文件/目录]
svn diff > diffname.patch (生成patch文件)
使用patch文件: patch -p0 -i diffname.patch

13、删除后一个版本对前一个版本的修改
svn merge -r27:26 [文件/目录] && svn ci -m "undo the work of version 27"
撤销版本27所做的修改

14、创建分支/标签
svn mkdir -m "Create branches" svn://192.168.0.4/sesame/branches
svn copy -m "Create release branches for version 1.0" svn://192.168.0.4/sesame/trunk /
                                                         svn://192.168.0.4/sesame/branches/release-1.0

 

 

------------------------------------------------------------------------------------------------------------------------------------------

今天为了把某个svn的修改提交到另外一个svn,尝试了一下以下的命令.除了因为初试代码不一致导致需要手动merge,其他情况下都可以直接apply生成的patch.
D:/BSvn/trunk/AndroidTouch>svn diff -r45478:45479 > ARS-878.patch

D:/BSvn/trunk/AndroidTouch>svn diff -r45479:45480 > ARS-819.patch
Global site tag (gtag.js) - Google Analytics