http://M.TangGaowei.com

存档: 2008年04月

2008-04-19 14:45:36  | 3,417 次浏览

前言:

想做一个能发送饭否( fanfou.com ) 的手机客户端。开始想自己编译一个手机片的 cURL 使用,后来又打算自己写 HTTP 协议代码。最后决定用 Socket 来实现 HTTP 协议。在用 Socket 向 Baidu 正确地发送一条 HTTP GET 请求,并返回成功信息后,在此做一总结。

总结:

中国移动的 GPRS 有 CMNET 和 CMWAP 两种网络连接方式。CMNET 直接连接到 Internet,就跟电脑通过路由器连接电信宽带一样。CMWAP 则只能通过中国移动提供的代理服务器 (10.0.0.172:80 或 10.0.0.172:9201 等) 连接 Internet。

要通过 GPRS 连接 Internet,首先要“初始化网络连接”。Socket 不会自动“初始化网络连接”。在使用前,要进行网络连接的初始化。将“浏览器”打开,任意连接成功一个网站,也能完成“初始化网络连接”操作。

HTTP 头必须以两个 CRLF 结束,如 “GET http://www.baidu.com HTTP/1.1\r\n\r\n” 。否则,服务器将不予响应。

在 HTTP 头中包含 “Connection:close” 项时,表示终止连接。客户端发送终止连接的 HTTP 头后,最多只能再收到一条从服务器返回的响应。一条响应可分多次接收( Recv ),一次接收一部分。

有文章说在发送 HTTP GET 请求前,先要向代理服务器发送 CONNECT 请求,如 “CONNECT 10.0.0.172:80 HTTP/1.1\r\n\r\n” 或 “CONNECT www.baidu.com:80 HTTP/1.1\r\n\r\n”。但是,我使用的GPRS,在 Socket Connet 后,是直接发送 HTTP GET 请求的。如果正确,返回类似 “HTTP/1.1 200 OK, Success …” 的信息。信息包括 HTTP 头和 HTTP 体。HTTP 体包含了请求地址的 HTML 源码,长度在 HTTP 头里有定义。

Socket 的 connect、send、recv 等都是阻塞式方法。即在这些方法返回前,进程被阻塞,不能执行其它操作。使用 Socket 的 Select 方法可实现非阻塞( 可能要配合多线程使用 )。

源码下载:GPRSSocket.zip

源码简介:

本代码实现“网络连接的初始化”、“连接( 中国移动的 )代理服务器”、“向代理服务器发送 HTTP GET 请求”和“接收返回信息”。

源码中使用到的要 C++ 类:

  • CConnectManager - 由 chrys 创建的 C++ 类,用于“初始化网络连接”。
  • Socket - 由 TangGaowei.com 创建的 C++ 类,用于封闭 Socket 的 connect、send、recv 等方法。

( 注:如果连接 10.0.0.172:80 代理不行,可改为 10.0.0.172:9201 重试 )

运行环境:

  • 多普达 586w (Windows Mobile 5.0 Smartphone)
  • 浙江移动 GPRS (20元包月) (已配置好网络连接)

开发环境:

  • Windows XP Home
  • Microsoft ActiveSync 4.5
  • Microsoft Visual Studio 2005
  • Windows Mobile 5.0 Smartphone SDK
  • Windows Mobile 5.0 Emulator Images for Smartphone - CHS
[ 标签: cmwap, GPRS, http, socket ]
[ 固定链接:http://m.tanggaowei.com/2008/04/19/60.html ]
2008-04-07 20:04:08  | 5,057 次浏览

Google 推出了 Java 版 Gmail 客户端,可在所有 J2ME 环境下运行。JBED 是 Windows Mobile 下最好用的 Java 模拟器,能够全屏运行 Java 程序。下面就讲述怎样在 Windows Mobile 下用 JBED 运行 Java 版的 Gmail 客户端:

1. 下载并安装 JBED

到目前(2008.4.7)为止,JBED 的最新版本是 20080222.3.1 。

下载地址为:http://www.m-gogo.com/thread-5106-1-1.html(注册后才可下载)

以上地址下载的 JBED 是中文版的 CAB 安装包,下载到手机里直接安装就可以了。安装时可选择存储卡作为安装路径。

JBED 安装完成后,会在开始菜单里添加快捷项,并与 jad 和 jar 文件关联。

2. 下载 Gmail 客户端 JAD 文件

下载地址:http://gmail.com/app(手机访问才可下载,可能要测试手机型号,但不一定)

用手机访问以上地址,可下载到 gmail.jad 文件。

3. 下载 KeyTest 用于测试“左键(LeftSoftKey)”、“右键(RightSoftKey)”和“选择键(SelectKey)”的键值

KeyTest 下载地址:http://ohfaint.3322.org/javamagic/

将下载到的 KeyTest1.jad 和 KeyTest1.jar 文件放到手机的同一目录下,然后通过 JBED 运行 KeyTest1.jad 文件进行安装。

在 JBED 里运行 KeyTest,通过按键测试,记录以上三个键的键值。(我的多普达586w 的“左键”、“右键”和“选择键”的键值分别为:-6、-7、-5)

4. 用文本编辑器修改 gmail.jad 文件

将 ReverseSoftkeys 项设置为 true,然后将 UseNativeCommands、UseNativeMenus、UseNativeTextButtons 项设置为 false,最后将 LeftSoftKey、RightSoftKey、SelectKey 项的值修改为 KeyTest 测试时记录的对应值。保存修改结果。

5. 安装 Gmail 客户端

在安装了 JBED 的环境下,直接执行 gmail.jad 文件就可以完成安装。安装过程会从网络下载相关文件。此方法为网络安装,必须在手机正确连接到互联网的情况(网络连接已初始化)下,才能完成安装,否则将因为无法下载相关文件而安装失败。

另外一种方法,是本地安装。按照 gmail.jad 文件的 MIDlet-Jar-URL 项对应的 URL 地址,先下载 gmail-g.jar 文件。将 MIDlet-Jar-URL 项的值修改为 gmail-g.jar 后,将 gmail-g.jar 和 gmail.jad 文件放到手机的同一目录下,运行 gmail.jad 完成安装。此方法在已有 gmail-g.jar 文件时,无需再连接网络,就可以完成安装。手机无法上网时,可用此方法。

在安装 Gmail 客户端的过程中,JBED 会询问有关访问权限的问题。应该赋予 Gmail 客户端所有询问的权限,否则可能无法正常使用。

6. 运行 Gmail 客户端

在安装完成后,JBED 会询问是否立即运行 Gmail 客户端。如果不立即运行,今后可以先从开始菜单里运行 JBED ,然后在 JBED 里选择 Gmail 程序项启动运行。

注意,应在 JBED 主界面的菜单里将“允许在后台运行”项选中。这样能避免切换应用程序后,相关按键失效的问题。(比如,不允许在后台运行时,从 JBED 切换到 UCWeb ,然后再切换回 JBED,“左键”、“右键”可能就失灵了)

由于 JBED 不能自动初始化网络连接,所以,在运行 Gmail 客户端前,先要初始化网络连接。将浏览器打开,随便打开一个网站,网络连接就已经初始化完成了。

多普达586w下可良好运行的 Gmail 客户端下载(包括 JAD 文件和 JAR 文件):
http://www.tanggaowei.com/download/gmail.zip

参考链接:

[ 标签: download, gmail, JBED ]
[ 固定链接:http://m.tanggaowei.com/2008/04/07/59.html ]
2008-04-07 17:49:25  | 2,085 次浏览

用 JBED 运行 Java 程序时,如果切换到其它程序,然后再切换回来。有时候, Java 程序的菜单等按键就失效了,按下去都没反应。

在 JBED 主界面的菜单里,设置成允许后台运行,即可解决程序切换的问题。

[ 标签: JBED ]
[ 固定链接:http://m.tanggaowei.com/2008/04/07/58.html ]
2008-04-05 13:55:59  | 1,796 次浏览

前一段时间,用 mail2web.com 的 Exchange 服务器收取邮件,然后通过 ActiveSync 进行定时同步,以实现自动收取邮件。但是,从此以后,我的其它几个客户端就再也收不到邮件了。

Exchange 服务器在收取邮件后,可能对 POP 服务器作了什么修改。以至于使得其它邮件客户端(如UCWEB、UCMAIL、koomail等)认为没有新邮件,而收不到邮件。

[ 标签: Exchange, 邮件 ]
[ 固定链接:http://m.tanggaowei.com/2008/04/05/57.html ]
2008-04-05 10:17:54  | 2,631 次浏览

UCMAIL 和 UCWEB 是一个公司出的,支持邮件推送,支持自动检测邮件的POP服务器。但是,UCMAIL 好像只有 PPC 版,没有 Smartphone 版。

今天我又到官方网站查看有没有新发布的 Smartphone 版。结果还是失望。但是,我发现 UCMAIL 有 Java 版的。在 Smartphone 上安装一个 Java 模拟器,不就能运行 Java 版的 UCMAIL 了!

我立即下载下来,用 jbed0802 模拟器进行安装试用。界面和操作都很友好,键盘操作和 UCWEB 类似。收发邮件都测试成功,其它功能再慢慢研究。

UCMAIL Java 版下载:地址

[ 标签: UCMAIL, 邮件 ]
[ 固定链接:http://m.tanggaowei.com/2008/04/05/56.html ]

简介

随时随地(路上、车上、排队等)都可以进行交流、娱乐、学习、工作——移动新世界!

订阅

 

手机访问

http://m.tanggaowei.com/wap/
查找文章: