兄弟们帮忙看一下:
客户端:
---------------------
winsock1.senddate"aa"
winsock1.senddate"bb"
winsock1.senddate"cc"服务器
------------------------
winsock1.getdate MSG 'MSG得到的值是"aabbcc" 具体如何解决?????多谢各位兄弟!!!!!

解决方案 »

  1.   

    你相变成这样吗?
    aa
    bb
    cc那么你自己加回车换行符winsock1.senddate"aa" + vbCrLf
      

  2.   

    或者试试只加换行符
    winsock1.senddate"aa" + vbLf
      

  3.   

    在两个发送语句中间加个doevents.
    也可以加个延迟
      

  4.   

    楼主的问题是典型的Winsock粘连问题,用如下方法即可解决。winsock1.senddata"aa"
    doevents
    winsock1.senddata"bb"
    doevents
    winsock1.senddata"cc"
      

  5.   

    setsockopt/LINGER_STRUCT 的定义你自己找Private Sub WsckMain_Connect()
        'TODO:设置SOCKET选项
        Dim lResult As Long     ' Results of 1st option.
        Dim lResult2 As Long    ' Results of 2nd option.
        Dim linger As LINGER_STRUCT
        On Error Resume Next
            lResult = setsockopt(WsckMain.SocketHandle, IPPROTO_TCP, TCP_NODELAY, 1, 4)
            If (lResult = SOCKET_ERROR) Then CheckDllError
            If Err.number <> 0 Then
                WriteToDebugWindow 4, "SetSocketOption", "设置TCP_NODELAY时发生错误:" & Err.Description
                Err.Clear
            Else
                WriteToDebugWindow 1, "SetSocketOption", "设置TCP_NODELAY成功"
            End If
            linger.l_onoff = 1
            linger.l_linger = 5
            lResult2 = setsockopt(WsckMain.SocketHandle, SOL_SOCKET, SO_LINGER, linger, LenB(linger))
            If (lResult2 = SOCKET_ERROR) Then CheckDllError
            If Err.number <> 0 Then
                WriteToDebugWindow 4, "SetSocketOption", "设置SO_LINGER时发生错误:" & Err.Description
                Err.Clear
            Else
                WriteToDebugWindow 1, "SetSocketOption", "设置SO_LINGER成功"
            End If
        On Error GoTo 0
    End Sub
      

  6.   

    用API设置 WinSock的Socket Option禁用Socket缓存,设置立即发送
      

  7.   

    多谢各位兄弟.
    To:tztz520(午夜逛街)  doevents这个方法好像效率不高。To:of123()
    2 客户端打包发送,服务端拆包。能否具体举个例子???多谢!!!!
    解决后马上揭帖。
      

  8.   

    winsock1.senddate"aa"
    winsock1.senddate"bb"
    winsock1.senddate"cc"
    中间加上doevents
      

  9.   

    除了中间加上doevents。还有其他方法吗?比如2 客户端打包发送,服务端拆包;或者像写短信网关程序一样,定义消息头,消息体。然后发送。
    具体如何实现呢??????分不够再加。
    多谢各位兄弟!!!!!!!
      

  10.   

    除了加DoEvents 没别的方法
    因为winsocks在执行发送语句后,只有释放一次cpu,sock缓存才会执行到发送操作.
      

  11.   

    http://blog.csdn.net/MysticBoys/archive/2006/02/22/606442.aspx
    我写的发送和接受的程序
    自定义的握手协议.
    vb6 和vb2005的代码都有.
      

  12.   

    winsock1.senddate"aa" & "@#@"
    winsock1.senddate"bb"& "@#@"
    winsock1.senddate"cc"& "@#@"
    在客户端如果收到数据后判断有"@#@"则自动分拆