一、
手机上
TCP/IP
通信的几个特点
1、通信稳定性差。手机通信稳定性远不如PC机,手机通信是属于无线通信,受手机信号及手机质量的影响较大,有时网络较繁忙时通信容易被阻塞,所以在设计上稳定性问题是经常要被考虑的重点;
2、平台不同,实现方法差异大。目前手机平台五花八门,通信的实现方法不尽相同,但基本上可以分为这么几类:同步阻塞、同步非阻塞、异步非阻塞、异步阻塞,其中阻塞方式较为少见。对于SOCKET几个常用的API,不同平台上运用方法也不尽一样,有些平台甚至不支持某些常用的API;
3、通信方式较特殊。如GSM手机要先通过GPRS拔号连接才可以进行通信,如果是中国移动手机,则GPRS拔号又分CMWAP和CMNET两种方式,其实二者都是差不多的,只不过CMWAP方式多了个中转服务器,而且这个中转服务器在每个地 方的设计又不尽相同,所以用CMWAP通信在有些地方好用,而有些地方可能会不好用;
4、通信速度慢。当前的手机通信速度跟以前的PC机上用电话线拔号上网的速度差不多,甚至可能更慢,随着3G手机的出现,手机上网速度将得到大大改观;
5、通信过程容易受其它通信的干扰,如来电或来短信经常会把通信给中断掉。
二、
建立通信的几个常用步骤
1、创建SOCKET。在有些平台上可能要输入当前应用的ID号,如果是异步的模式,创建SOCKET后可能还要注册一些SOCKET事件;
2、设置SOCKET。在有些平台上你可以为SOCKET设置如发送buffer、接收buffer的大小,还可以设置超时时间长度、SOCKET关闭方式等,但要注意并不是每个平台上都会支持这些设置,所以在设置完后最好再取一下这些设置值,看是否能够设置成功;
3、DNS解析。有些平台DNS解析成功后会通过消息机制反馈回来,有些平台会发生阻塞直到DNS成功后才返回,但有些平台可能需要你通过反复地做DNS解析直到DNS解析成功为止;
4、连接服务器。在手机上进行反复重连是很正常的,不要指望每次一下就能连接成功,一次连接不成功,再做几次连接是必须的,因为手机通信稳定性差,有时可能会一下子连接不上;
5、发送数据。由于手机通信速度较慢,所以不要一下子发送太大的数据,最好是小数据量分批发送,特别是通过CMWAP通信时,大数据量通信的失败率是最高的,如果平台支持select方法,最好每次发送前用select方法检查一下是否可以发送了,对于是同步方式实现的通信,更须要这样子做;
6、接收数据。对于异步方式,一般会先来个接收的事件表示有数据来了,对于同步方式,如果平台支持select方法,则也最好用这个方法检查一下是否有数据可以接收了;
7、关闭SOCKET。在有些平台上在关闭SOCKET前还要先shut down连接后才可以关闭SOCKET。
另外:如果通信需要GPRS连接支持,则在建立通信之前要确保GPRS已经打开,通信结束后还要关闭GPRS操作。
三、
通信调试过程中可能会出现的问题
1、无法连接到服务器,可能原因是:连接函数的参数设置不对,或连接地址设置不对,或手机已欠费,或没有开通上网服务功能如对于CMWAP需要先申请开通才能用,或GPRS打开方式不对(如果要连网关则应当用CMWAP方式打开GPRS,如果要直接连接服务器则用CMNET方式打开GPRS);
2、频繁打开关闭SOCKET,最后出现SOCKET创建失败,可能原因是:关闭SOCKET方法不当;
3、用户中途做取消操作后,下次通信无法进行,可能原因是:取消退出时方法不对,如没有关闭SOCKET或GPRS没有关闭;
4、数据包发送不成功,可能原因是:连接不成功,或数据包太大过不了WAP网关,或远程服务器已断开连接,或出现connect reset错误;
5、数据包接收不成功或只接收到一部份的数据,可能原因是:出现connect reset错误,如果是通过网关接收数据,则有可能是网关断开了连接;
6、手机在电源不足的情况下,通信无法正常进行,可能原因是:手机信号太弱。