本人为一个客户程序做一个服务端程序,测试时候发现,服务端程序发出的字符流,有时会在客户端叠加,形成错误消息,大致的代码是这样的。
//客户端
sub winsock_dataarrival()
    dim strGetData as string
    winsock.getdata strGetData 
end sub//服务端
ServerSock.send strSend1

ServerSock.send strSend2如果上述两条代码在一个过程中被调用,客户端收到的信息就是strSend1+strSend2,我加了很长的延时程序也没有用,与之相反,如果在不同的过程中调用ServerSock.send,间隔时间再短也不会叠加,这让我很困惑,大家有经历过这样的事吗?请问如何解决?谢谢。

解决方案 »

  1.   

    //客户端
    sub winsock_dataarrival()
        dim strGetData as string
        dim tmp() as string
        dim i as long
        winsock.getdata strGetData
        tmp=split(strGetData,"|")
        for i=0 to ubound(tmp)
        ....
        next
    end sub//服务端
    ServerSock.send strSend1 & "|"

    ServerSock.send strSend2 & "|"
      

  2.   

    两个SEND之间加上DOEVENTS试试看!!
      

  3.   

    send方法后加上doevents,让系统取得操作权来处理winsock缓冲区的数据
      

  4.   

    同意
    subzero(赘姆烂壳) ( ) 
    当然也可以和  yxgsb(浪子小管) 一样自己控制,我通常也是这么实现,如果数据量不是很大的话,这样写的话,控制更方便一些,因为那些响应语句可以使一些用于控制的语句
      

  5.   

    兄弟,不好意思,借贵宝地一用:
    我单位招人,让我联系一下深圳某报社招聘
    岗位:网络管理维护工程师 1名
    要求:
    1.男性,25岁以内,大学本科以上(含本科)学历;
    2.有大中型局域网一至两年的管理维护经历;
    3.具有windows应用编程能力者优先。有意者请将简历发至[email protected]
    合则约见
    有效期至2003年11月30日