软件详细设计实例:Blackberry无线连接的原理

来源:百度文库 编辑:九乡新闻网 时间:2024/05/06 06:45:47
Blackberry无线连接的原理 2008-11-07 14:34BB天生就是联网的。只要显示gprs,无论大小写,都说明BB已经连在网上了。所以说每个BB都能上网。 BB一开机,首先会连到CMC的gprs网络,获得IP地址,即使你没有填写apn。然后,马上就会向blackberry.net注册。RIM将会验证该BB是否合法用户。由于CMC的blackberry服务并没有真正开展,所以所有用CMC的SIM卡的BB都不是合法用户,因此,RIM就会拒绝BB的请求,你就会看到BB上显示”数据连接被拒绝“。显然,这里的”被拒绝“是被RIM拒绝,而不是被CMC拒绝。就这一点,暗示BB其实是联网的。由于被RIM拒绝,所有BB的功能,除了打电话跟发短信,都不能使用。 当RIM发布4.0的OS后,情况有了转机。这个版本支持BB直接连接Internet。就是说,在没有BES/MDS或者BIS的情况下,BB也可以通过第三方软件上网!相信很多tx都在blackberryforums上看到过那篇文章。只要在options->TCP里填写APN,第三方软件就可以直接连到Internet上。这里强调的是第三方软件,BB本身的browser是不行滴。 BIS要由运营商支持,BES/MDS也不行,所以我们想要上网只能通过这个TCP。 据反馈的情况,BB直接上Internet在很多国家都实现了。这里有个细节,是说T-Mobile重新开放了BB直接连接Internet的服务。就是说,运营商可以支持或者关闭这个BB直连服务。那么显然,CMC目前并没有开放这个服务 这就是为什么我们没法简单的填上APN后还没法上网的原因了。 2.体验BB直接连接Internet尽管CMC不支持BB直接连接Internet,我们还是能够体验一下这个功能,只不过是通过BB的模拟器,而不是在真机上。pczu tx已经介绍过通过BB的模拟器加MDS模拟器上网的经验。那是我前面说的BB+BES/MDS的上网方式。我查了RIM的资料,提到BB模拟器在4.0之后也支持直接连接Internet的功能。我也尝试过,的确可以。在不打开MDS模拟器的情况下,BB模拟器是可以直接连上Internet的。这个给我们无限希望 3. Service Book和HRT很显然,BB的上网是由Service Book来控制的,而HRT是给Service Book引用的。即使在BB上装了Browser,由于没有service book,browser不仅没法使用,甚至都不显示出来。如果能从哪里得到service book,然后写到BB里,那么情况会怎么样呢?首先是得到service book。在网上google了很久,没有找到任何有用的资料。感觉很少有人关注这个话题,大概老外都用有服务的BB的,service book只要让运营商推一下就行了。这个难题困扰了我很久,都快放弃了。这时候想起了BB模拟器!BB模拟器里的BB是有service book滴! 柳暗花明啊,很顺利的把模拟器里的service book备份出来,是著名的ipd文件!从haobo的一个帖子里看到关于ipd的结构,从RIM也查到相关的文档,从而大致看懂了这个service book的结构和内容。顺便说一句,对ipd下功夫是值得的,现在,只要有一个合适的编码,我就可以弄一个完整的autotext输入法出来,或者把随便什么图片写到BB里。非常简单。接下来就是把service book写进BB。这个过程也有很多波折,service book有时能写进去,有时又写不进去,不知道为什么。这个service book的文件包含3个记录。又去RIM查啊查,总算翻到资料,搞清楚了每个记录的功能。每个记录里,最重要的是CID,这条指明了该记录的类型。其中,CMIME跟email相关;IPPP(IP Proxy Protocol)跟连接有关;而Browserconfig跟Browser的设置有关。因为主要兴趣在网络浏览上,所以对email只简单的测试了一下,发现通过BB收发email是可行的。而且比上网更简单。进展非常顺利,简单的修改了service book里相应的记录后,BB就能连到我的电脑上了。通过抓包,发现BB跟电脑的通讯居然都是明文!呵呵,这样事情就简单了。MDS模拟器在电脑上有两个进程,一个是监听在TCP的8080。这个进程是管理MDS以及push数据到BB端的接口,RIM有文档介绍的。另外一个进程监听在UDP的19780。这个进程就是BB通过MDS上网时的服务端口。BB上网时所有请求都发到这个端口,然后由MDS处理。MDS扮演代理服务器的角色。另一方面,BB上也开了两个进程。一个监听在UDP的19780。这个进程是BB上网时收发来自MDS数据的端口。另一个进程监听在UDP的19790。这个进程是BB收发email的端口。至此,BB联网的结构就基本清楚了。所谓push mail,说穿了,就是BES/MDS主动把email通过UDP的方式发到BB端而已。BB不需要主动连接到服务器,只需要在UDP的某个指定端口监听就行了。而上网呢,也是如此,通过MDS作为proxy。 4. Service Book的导出,编辑和写入关于这个话题,其实没有很多好写的,只有一个经验可以分享,那就是在BB没有装browser的情况下,导出和写入会比较顺利。其中,net_rim_bb_browser_lib.cod这个文件的影响最大,另外一个net_rim_bb_browser_rendering_lib.cod会检查service book的。具体的机制还不清楚。就我而言,起码一半时间是花在编辑那个ipd文件上的。熟悉结构之后,你就很容易的得到你想要的service book了。接下来介绍一下service book的结构。service book其实分两部分,一部分是在service book里看到的记录,另外一部分是HRT。当BB在gprs覆盖下时,前者引用后者。根据我的观察,在ipd里,service book的记录和HRT既可以分成2个独立的记录,也可以合并成一条记录。每个service book的记录都会有这么一条:Gateway IP,格式是//127.0.0.1:19781;19780/blackberry.net|GPAK显然,这个真是我们关注的,BB联网的路由!127.0.0.1是BES/MDS或者BIS的地址,后面跟着监听的端口,前者是服务端,后者是BB端;blackberry.net是连接的apn,GPAK是协议。那么,通过修改这个项,我们可以让BB连接到我们指定的某个地址,而这个地址有MDS在运行,从而为我们自己的BB提供服务。正是通过这个方式,我已经成功的在我的BB浏览网页。鉴于有tx没法备份出servie book,我在这里贴出来。这个service book是从独立的BB模拟器中备份出来的。至此,BB通过第三方软件上网的的秘密就公布出来了。这种方式下,我们自己,而不是RIM跟运营商,给BB必要的service book和HRT,并且为BB架设一个MDS服务提供中转服务。大家可以自己去尝试,当然其中还有很多细节需要自己克服,而我将尽可能分享出我的经验。有趣的是,这个模式其实是第三方软件+MDS上网,而不是我先前说的直接联网。我从一个起点出发,却到达了另外一个目的地,不过效果是一样的。如果有tx能做到这一步,那么我再告诉他一个秘密,一个到达我们希望的目的地的秘密。 5. 关于BB的browser和messages无论service book编的如何完美,我们都没法使用browser来上网,原因有两个:一是browser有个模块会检查service book,而发现这个service book是假的;二是,browser会检查BB的网络状态,当gprs是小写时,BB会认为目前的信号太弱而放弃联网。基于这两个原因,我们没法使用browser。不知道BB的早期版本是不是也这样的。正在下3.8的版本,有了结果再写。幸运的是,messages不会这样,所以在BB上收发email从理论上讲很有可能。我就成功的发出和收到email。但是因为服务器端没法记住BB的地址,所以没法主动push;只有当BB要发email而去连接服务器时才能顺便收到email。但是,我认为这个困难是可以克服的,从而实现push mail。现在没有硬件条件,所以没法进一步尝试。