我用IdTcpServer与VC通信,每次根据客户端(VC)的请求,数据库中查询数据,按照定义好的
的数据结构一条一条的发送给客户端,如果是数据很少的情况(4,5条)数据传输没问题,但是
一旦数据达到几千条数据时,就会发生数据丢包现象,
现在我就在发送的数据结构后加一个校验的数据位,服务器端发送数据,客户端接收数据,
根据校验位检验数据是否正确,错误,返回错误信息,服务器重新发送。正确就发送下一条数据
基本上就能解决问题,但是如果采取校验的方法,数据的传输速度很慢的,每发送一条数据,就得
等待客户端的校验信息,
我想知道各位有什么更好的方法了,大家交流一下
的数据结构一条一条的发送给客户端,如果是数据很少的情况(4,5条)数据传输没问题,但是
一旦数据达到几千条数据时,就会发生数据丢包现象,
现在我就在发送的数据结构后加一个校验的数据位,服务器端发送数据,客户端接收数据,
根据校验位检验数据是否正确,错误,返回错误信息,服务器重新发送。正确就发送下一条数据
基本上就能解决问题,但是如果采取校验的方法,数据的传输速度很慢的,每发送一条数据,就得
等待客户端的校验信息,
我想知道各位有什么更好的方法了,大家交流一下
解决方案 »
- ◆◆◆◆ 小生命降生 ◆◆◆◆
- ADO运行存储过程超时的问题
- 关于2个DBGRID的问题
- 为什么我的qq总是登陆失败的啊,同事的就可以上去,我就是上不去
- 关于从BDE中的table转换成ado中的adotable的FindNearest属性
- 如何调用其他窗体中的带参数的一个过程?看看我的问题出在哪儿了??
- ■■■■谁有mp3转wav的控件或者代码呀!!■■■■
- 强烈打击csdn这个无耻的yy+变态狂----hsddsh!
- 怎样将一段文字保存到数据库中
- 下了个报表控件,但不知道怎用????
- 寻找: fengjn(小枫) !!!!!请近来聊!!!!!!!(单间)
- 在线等待,到哪下载免费DELPHI6.0?
MFC在CSocket类发的数据包里加了很多自己的东西
但是传输少量的数据就没有问题
几千条记录数据量应该也不算大,
你是怎么来保证发送与接收同步呢?
你很多东西没有说清楚,不知道你具体怎么做的,
只猜测你是发送和接收结构数据,
没有用过VC的CSOCKET,不过我想它应该也有阻塞与非阻塞的区别..
如果是ONREAD类似事件来接收,一定要把数据当成"流"来看待...
1。客户端发出数据请求,从服务器端下载数据,数据按照定好的数据结构发送,
2。VC端是使用CSOCKET,使用阻塞方式,
3。我原来是服务器端从数据库中取出数据,就开始发送数据,直到数据发送完,就断开连接,这时客户端可能没有收完
这儿的判断是简单却重要,它可以确定到底有多少字节发送到对方的
接收缓冲区(对方应用程序是否已经将其取出与否判断不到的)
有这样的判断,发送端可以放心的断开连接。象上面这样排除发送端问题后,就把注意力集中在接收端。。
没有用过VC的CSOCKET控件,你自己找找关于它的资料吧。
idTCPServer的sendbuffer size已经很大了,我试过的,不管是设置为1024还是其它的值,都不行的
注意socket的底层 send调用是有返回值的,实际发出的字节在返回值里。如果你用CSocket配合CArchive ,那么也不会丢包我估计你是直接调用了CSocket的send方法,而这个方法实际是它的父类的方法
你必须处理返回值来确定到底发出多少字节。俺用vc的socket发送过超过几十兆的东西,在局域网内,也曾经广域网上,都不会
出现丢包的事情。