我的接收数据部分代码,包大小是1024:
sTmp = INET(Index).GetChunk(1024, icString)
    If Len(sTmp) = 0 Then
        bDone = True
    End If
    Do While Not bDone
        Get_Data = Get_Data + sTmp
        sTmp = INET(Index).GetChunk(1024, icString)
        If Len(sTmp) = 0 Then
            bDone = True
        End If
    Loop采出来的内容变成了这样</STRONG></A></P>
<P>  拉斯维加斯一直被世人认定是成人的奇幻世界。这个地方是一个不折不扣的不夜赌城,它存在的目地就是为了赌,除此之处谡飧龆嘣某鞘欣铮阑亩杉俾霉荨⒅挠槔纸谀俊⒘鄣呒兜耐聿汀⑹澜缂兜母叨蚯虺 捕伎梢栽谡饫镎业健?/P>
<P align=center><IMG style="BORDER-LEFT-COLOR: #999999; 当我把包大小改成10240的时候这里的字符就正常了,因此我怀疑是双字节字符在分包时被分割了,请问有办法解决不?谢谢

解决方案 »

  1.   

    改用二进制传输试试
    Private Declare Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" (ByRef Destination As Any, ByRef Source As Any, ByVal Length As Long)Private Sub Command1_Click()
        Dim aAll() As Byte, aBuf() As Byte
        Dim lAllLen As Long, lBufLen As Long
        
        Do While True
            aBuf = Inet(Index).GetChunk(1024, icByteArray)
            lBufLen = UBound(aBuf) + 1
            If lBufLen <= 0 Then Exit Do
            
            ReDim Preserve All(lAllLen + lBufLen - 1)
            CopyMemory aAll(lAllLen), aBuf(0), lBufLen
            lAllLen = lAllLen + lBufLen
        Loop
        stmp = StrConv(aAll, vbUnicode)
    End Sub
      

  2.   

    可以了,我都快哭了,谢谢,麻烦兄弟去
    http://topic.csdn.net/u/20071119/12/8e51d888-20a1-449a-ad4b-0b2e68a076c5.html
    回贴,我给分
      

  3.   

    哥们的方法确实不错,但我仔细检查,如果使用icstring方式,直接获得串,cpu很低。
    如果使用二进制方式,增加了strconv转换,cpu高达100%。icstring有很多bug,读不了很多内容有哪位大侠能解决??
      

  4.   

    经我测试没有 StrConv(aAll, vbUnicode) CPU降下70%