读书人

用WINSOCK传输文件中的乱码有关问题

发布时间: 2012-04-07 17:31:51 作者: rapoo

用WINSOCK传输文件中的乱码问题
用WINSOCK做了传输文件的程序,在接受文件时,出现了乱码(部分汉字乱码),
例如我要传输的内容,传输出去后,接收到是这样的:Dim Gvstr As String = "" '全局变量 历史遗留数砭莅?
请各位大侠告诉我该如何接收才能保证不乱码呢?

[解决办法]
你可否列出一个收到的字节数组的内容,和其对应的正确的字符?这样好判断些。
[解决办法]
将任何要传输的内容都转为Byte数组,发送,接收Byte数组,反转为所需内容。
[解决办法]

VB code
Dim lngFileSize As LongDim lngReadSize As LongDim strFileName As StringDim lngState As LongDim fs As IntegerPrivate Sub Command1_Click()    strFileName = "C:\test.rar"    lngFileSize = 0    lngReadSize = 0    lngState = 0    Winsock1.Connect "127.0.0.1", 999End SubPrivate Sub Winsock1_Connect()    Winsock1.SendData "GET " & strFileNameEnd SubPrivate Sub Winsock1_DataArrival(ByVal bytesTotal As Long)    Dim byBuff() As Byte    Dim strBuff As String    Select Case lngState    Case 0: ' 取得服务器发回来的文件数据大小            Winsock1.GetData strBuff, vbString, bytesTotal            If Len(strBuff) < 5 Then                Winsock1.Close                Exit Sub            End If            If UCase(Left(strBuff, 3)) <> "+OK" Then                Winsock1.Close                Exit Sub            End If            strBuff = Right(strBuff, Len(strBuff) - 4)            If IsNumeric(strBuff) = False Then                Winsock1.Close                Exit Sub            End If            lngFileSize = CLng(strBuff)            lngState = 1            Winsock1.SendData "+OK Send Data"            Exit Sub    Case 1: '开始读取文件数据            Winsock1.GetData byBuff, vbArray + vbByte, bytesTotal            If lngReadSize = 0 Then                fs = FreeFile                Open strFileName For Binary As #fs            End If            Put #fs, , byBuff            lngReadSize = lngReadSize + bytesTotal            If lngReadSize >= lngFileSize Then                Close #fs                Winsock1.Close            End If            Exit Sub    End SelectEnd Sub 

读书人网 >VB

热点推荐