delphi中用了clientSOCKET控件用于读取服务器的数据,发现当服务器发送数据过快时, 客户段读取的数据会丢包或者解析错误。现在想把读取数据的函数放到一线程中,请问如何处理?或者是否还有别的解决方案?

解决方案 »

  1.   

    这个问题好办的,你采用的是tcp传输的,针对这个,服务器端发送的时候进行两次交互,发送的时候首先发送长度,客户端接收到以后,回传响应并且设置接收缓冲区长度,然后服务器再发送,发送完毕后,客户端再发响应,这样就不会有问题了
      

  2.   

    如何发送,如何接收?使用ReceiveBuf/ReceiveText的时候有没有对返回值进行处理?
      

  3.   

    TCP协议, 只要连接没有中断, 服务端发送出来的客户端是肯定会接收到的。"发现当服务器发送数据过快时, 客户段读取的数据会丢包或者解析错误。 "
    这个问题一般都出在客户端的接收和处理代码上。当服务器发送数据较多较快时,会出现两次(或多次)发送的数据包同时到达客户端,此时,如果客户端的接收和处理代码不正确处理的话,就会出问题了。