当用TClientSocket发送数据时 TServerSocket接收数据 
如果TClientSocket发送数据 速度过快  
TServerSocket在接收数据时就把 两侦或者更多侦的数据一起接收 怎么解决这些问题
也就是TServerSocket 接收数据时只允许一侦一侦的接收!

解决方案 »

  1.   

    欢迎大家加入DELPHI程序员群1805366 ,一起交流技术!
      

  2.   

    确实会这样的,你可以这样接收
        while Socket.ReceiveLength<SizeOf(TBLOCK) do
        begin
          application.ProcessMessages;
        end;    Socket.ReceiveBuf(BLOCK,SizeOf(TBLOCK));如果可能接收不同类型的数据包,就要加包头,先接收包头,根据包头确定要接收数据的大小。
      

  3.   

    现在大多数的数据报文格式如下;希望对你有启发:采用面向稳定连接的ASCII流(STREM)方式。具体数据包格式如下图所示:
    序号 含义        宽度      格式                    说明
    1 头标志         1             二进制数        数值:0X02 
    2 业务数据包长度   4    右对齐,左补0          数字串报体长度,不含包头包尾,不含
                                                           校验字节 ,不含本身长度
    3 业务数据包       N          变长字符串
    4 尾标志         1         二进制数                  数值:0X03
    5 校验字节         1   二进制数
    ======================================================================================
    算法如下
    校验方式:从包的第一字节0x02开始,逐字节进行异或到包的结尾0X03,结果为最后校验字节。