基于idtcpclient和idtcpserver的数据传输,当服务端只接收数据,不对数据进行处理时,数据丢失率较少,能够达到要求,但是如果对数据进行处理时,数据丢包比较严重,(这里对数据处理用存储过程)
根据现状,如果连接20个客户端,每60毫秒要处理20个数据包。

解决方案 »

  1.   

    也就是说现在对数据处理的速度根不上接收数据包的速度,而且cpu的使用情况对接收数据包有很大的影响。
      

  2.   

    没用过idtcpclient和idtcpserver但当时我用ServerSocket和ClientSocket的时候,也没发生过这样的情况啊用阻塞模式,接收多少就处理多少,应该不会造成丢包用接收线程和处理线程,分别处理接收线程仅仅负责把接收到的完整的包放到处理队列中,处理线程仅仅负责处理这样效果会好很多
      

  3.   

    把接收和处理分开做。以前也用ServerSocket和ClientSocket做过类似的东西,没有这种问题啊。
      

  4.   

    我在作这个程序的时候自己做了一个缓冲区,这个缓冲区负责的是把所有接收到的数据包暂存,用一个timer控件定时处理这些数据包,这样满足不了要求,丢数据包的情况仍然存在
      

  5.   

    呵呵..楼主讨论这么半天,也不说自己具体实现些编码片断...可以明确的告诉楼主,基于TCP通讯,数据传输可靠相当高的.如果出现丢包现象,只能是明显的代码错误或应用协议设计缺陷.