TCustomWinSocket receivebuf 读完所有数据
TClientSocket TServerSocket 均采用non-blocking 方式连接,server不断地用 SendBuf(void*, int) 发送数据。TClientSocket 在 onRead 事件中用 ReceiveBuf(void*, int) 读取数据。 读取数据时根据 TCustomWinSocket 的 ReceiveLength 返回值开辟缓冲区大小并读取相应个数的字节。
可是 ReceiveLength 的返回值只是估计值,会不会造成数据没有读完?
另外,在 onRead 事件处理的过程中,发现TClientSocket仍然会不断接收数据(只要缓冲没有满)。onRead事件是什么情况下触发,是接收到一定数量的数据还是一段时间就触发?
[解决办法]
建议你Server发送一批数据后,等待TClientSocket回复后再发下一批数据,不然读到的数据可能有错(我曾经碰到过^_^)
[解决办法]
onRead事件是什么情况下触发,是接收到一定数量的数据还是一段时间就触发?
没一定的
[解决办法]