TCustomWinSocket receivebuf 读完所有数据,该怎么解决

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事件是什么情况下触发,是接收到一定数量的数据还是一段时间就触发?
没一定的


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