WINCE设备UDP SOCKET开发体会

WINCE设备UDP SOCKET开发体会

 

    最近项目要求做一个监控项目,初步决定采用TCP+UDP的方式来实现。

 

    PC上一切调试通过,可部署到服务器和WINCE终端上后,出现了一些没有预料到的问题,只能说经验太少。

 

    经过一段时间的测试和请教,监控服务开始试提供了,在此特感谢张国威在开发过程中的热情帮助。

 

以下是在开发过程中的一些体会,不保证完全正确,但都是在开发过程中碰到的一些问题,如有错误,敬请指正,不胜感激。

 

注:本文档中提到的socket均为UDP方式。

1WINCE终端通过GPRS连接到网络,网络运营商会随机分配一个局域网ip给终端,终端需要通过通信运营商的网关连接到公网实现数据的收发。

 

2,在终端使用的过程中,如果出现重启或者断线重连的情况,那终端的ip也会随之改变。

 

3WINCE终端上创建socket,往服务器指定端口发送数据时,在持续发送数据的过程中,会出现端口改变的情况,具体变化和终端向服务发送数据的时间间隔有关,具体分析如下:

  假设设备和服务器的连接超时时间为T(该超时经过测试,用移动的GPRS,超时时间大概在30s左右),终端向服务器发送数据的时间间隔为t,则:

a)         t < T:终端向服务器发送数据的端口不会改变,服务器也能向终端推送数据。

b)        t > T:终端向服务器发送数据的端口发生改变(系统指定),服务器向终端推送数据失败。

 

4,鉴于3所描述的现象,难道终端上的socket不能调用bind绑定指定端口吗?经测试,即使调用bind函数来指定端口,可从服务器接收到的数据包来看,端口并非是指定的端口(这个是为什么?请高人解惑)。

 

5,服务器采用收发使用不同端口的模型的分析:

 

a)         终端创建socket,向服务器的recvPort发送数据;

b)        服务器收到数据后,使用sendPort向终端发送处理结果;

该模型使用的情况分析:

1)        服务器-终端:同一局域网,A成功,B成功;

2)        服务器-终端:公网-公网,A成功,B成功;

3)        服务器-终端:公网-局域网,A成功,B失败;

 

 

结论:

1,WINCE设备不能创建一个只接收数据的服务端.

2,WINCE设备的超时时间大概30秒到一分钟左右.

3,如果要实现服务器下发数据到终端,则终端需定时发送心跳包(心跳包时间间隔需小于超时时间)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值