基于 XmlRpc++ 而改进
主要扩展了(修改)了以下功能:
- 双端监听:服务器能监听客户端请求,客户端监听服务器请求
- 命令执行由同步改为异步,消息发送后没有确认机制
- 消息发送方:建立发送缓冲区
- 消息发送方:支持多线程的消息发送
//
目前消息的发送与解析相对较稳定,但还存在一些不完善的地方,如下:
1.不支持命令的确认机制;
也就是说,当命令发送至缓冲区时,并不能确保消息成功发送至目的地
比如说,消息已成功发送至缓冲区,尚未发出,但此时网络断开或者对应应用程序关闭,则消息无法成功发送
暂时还无进一步处理
后面考虑的可能策略是:a.加入每条消息的确认机制
b.发送失败通知应用程序
但是,如果每条消息都进行确认的话,那么资源的消耗与程序复杂度将会大增。因为需要维护每一条消息的收发情况,对其进行计时等等,如果这样,那就相当于在应用层设计一个简单的类似于TCP的协议了。但是如果不做这些,那么,可靠性就无法保证。
难以取舍。
2.应用程序无法探知网络层的原始数据:比如说在服务器端,客户端建立连接,连接断开,网络层发送的原始数据等
此类消息网络层可以感知,但应用程序无法感知此类消息
后面可能的策略是:提供对应的消息服务,应用程序在对应接口后可以即时感知此类消息
3.使用开放接口不是很方便
暂时还没想到什么好办法来改善接口。
4.当消息发送速度非常快(比如1s发送100个数据包)时,缓冲区可能会填满而导致发送队列后面的数据发送失败
当数据发送速度非常快时,可以扩大缓冲区,缩小单次监听时间(work函数里面的参数)两个参数来缓解这种情况
但无法从根本上解决这个问题
现在的设计是通过一个固定的数组做一个循环队列,数组大小不可变。
暂时考虑策略是:数组改为指针。当容量超过缓冲区容量80%时,将缓冲容量扩大1.5倍。再设置一个缓冲区的最大限度,比如1024,不能超过此容量。
比较麻烦的是需要维护内存的重新分配与释放。
分享到:
相关推荐
C++源代码代码,网络传输模块的例子,对于初学网络编程者有一定的帮助。
已经调试成功的网络传输模块,测试效果还不错
GPRS模块,GPRS无线传输模块采用低功耗设计,通过GPRS或短消息远程传输数据,在太阳能供电的监测现场,可大大减少太阳能供电成本并降低施工难度,广泛应用于气象、水文水利、地质等行业。
E702T网络音频传输模块,音频传输模块,局域网传输
基于异步SOCKET的文件传输模块,是文件传输更加方便快捷!
平升GPRS数据传输模块(透明数据传输模块DTU)支持GPRS和短消息方式传输数据;支持最多与5个中心进行数据通信。GPRS数据传输模块采集串口设备数据,如串口仪表、采集器、PLC等。GPRS数据传输模块支持远程参数设置、...
(无线)数字量传输模块 (无线)数字量采集模块
STR-RBee系列ZigBee无线透明传输模块,基于德州仪器先进的低功耗无线连接芯片进行设计,体积小,功耗低。RBee模块内部运行ZigBee 07/Pro协议栈,并继承该协议的优点,拥有极强的路由能力,良好的兼容性。更将ZigBee...
选用的GPRS模块是西门子的MC55模块
DATA-6106GPRS数据传输模块使用说明书pdf,DATA-6106GPRS数据传输模块使用说明书
基于DSP的视频采集与网络传输模块的设计说明.doc
基于CDMA模块实时无线数据传输的设计,应用性很强。
基于DSP的视频采集与网络传输模块的毕业设计说明.doc
zigbee无线网络通信的相关资料,这个是无线传输模块的设计
S072 nRF24L01无线传输模块示例程序,发射端及接收端的示例程序,已调试可用。
nRF2401 无线传输模块 2009年电子设计大赛模块资料
使用于唐山平升的RTU DTU设备,作为模块设参使用,非常实用,一般很难下载到
DATA-6106GPRS 数据传输模块使用说明书pdf,DATA-6106GPRS 数据传输模块使用说明书
NRFL2401无线传输模快,NRFL2401无线传输模块NRFL2401无线传输模块