有个问题向你请教一下!我写了一个SOCKET,在服务端 我把接受的数据赋给一个记录变量,然后我写的函数对这个记录进行处理,当处理到一半的时候SOCKET又收到一个数据,这个时候又赋到记录变量里面了,把处理了一半的记录类型给覆盖了.在这里就会出错,你有什么办法来解决这个问题

解决方案 »

  1.   

    收到数据,新建一个record,并通过消息发送给窗体,在消息中处理。
      

  2.   

    将收到的消息记入一个TStringList,你的处理程序可以循环一个一个来处理。
      

  3.   

    楼上的能说的更细点吗?ClientSocket -> ServerSocket 传送一个文件,把文件分成块,一块4K
    ClientSocket -> ServerSocket 传送一个命令,让ServerSocket端来处理这个命令
    ClientSocket -> ServerSocket 再发送上次没有发送完的文件块,ServerSocket继续接收每块4K的文件
    ClientSocket -> ServerSocket 再传送另一个文件,把文件分成块,一块4K
    ClientSocket -> ServerSocket 再接受第一个没有传完的文件因为客户端和服务端交换数据的时候是用户来决定的,这个时候想传文件,当文件传到一半的时候又想换行别的命令...就像木马一样,在传文件的时候又还要传别的命令字符串.这个时候就会出现问题了.
      

  4.   

    楼主,建议用indy,不要用ClientSocket,
    对于通讯数据,都是流线型的,所以,对于流线的数据采用阻塞方式比较好控制
      

  5.   

    楼上果然十足菜鸟,谁说ClientSocket不好?
    楼主问题是事件顺序未组织好或多线程同步问题,关Socket什么事?
    楼主请先理清Socket的事件激发顺序就可以,假如数据很多,为什么不开一个队列?