首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

TCustomWinSocket receivebuf 读完全部数据

2013-02-02 
TCustomWinSocket receivebuf 读完所有数据TClientSocket TServerSocket 均采用non-blocking 方式连接,ser

TCustomWinSocket receivebuf 读完所有数据
TClientSocket TServerSocket 均采用non-blocking 方式连接,server不断地用 SendBuf(void*, int) 发送数据。TClientSocket 在 onRead 事件中用 ReceiveBuf(void*, int) 读取数据。 读取数据时根据 TCustomWinSocket 的 ReceiveLength 返回值开辟缓冲区大小并读取相应个数的字节。

  可是 ReceiveLength 的返回值只是估计值,会不会造成数据没有读完?

  另外,在 onRead 事件处理的过程中,发现TClientSocket仍然会不断接收数据(只要缓冲没有满)。onRead事件是什么情况下触发,是接收到一定数量的数据还是一段时间就触发?
[解决办法]

建议你Server发送一批数据后,等待TClientSocket回复后再发下一批数据,不然读到的数据可能有错(我曾经碰到过^_^)


[解决办法]
onRead事件是什么情况下触发,是接收到一定数量的数据还是一段时间就触发?
没一定的
[解决办法]

引用:
onRead事件是什么情况下触发,是接收到一定数量的数据还是一段时间就触发?
没一定的


我的经验是:在一次事件中,只要缓冲区里有数据没有读完,下一次来数据了,好像也不触发了。

热点排行