textstream.writeline()写到文本文件里。 Open CheckFileDir For Binary As #hffsize = LOF(hf) tcpServer(Index).SendData bbuf 'Dim bbuf() As Byte 这样得到的fsize和对方收到的信息的字节数不符吗
我自个再顶一下,老大们,帮一下吧,现在对方说每收到256个字节后就出现乱码。 以下是我代码: Const bufsize = 4096 'Const bufsize = 1024 Dim bbuf() As Byte Dim hf As Integer Dim fsize As Long Dim bufEnd As Long ReDim bbuf(0 To bufsize - 1) hf = FreeFile() Open CheckFileDir For Binary As #hf '是要发送的文件fsize = LOF(hf) Do While (Seek(hf) - 1) + bufsize <= fsize Get #hf, , bbuf tcpServer(Index).SendData bbuf ContinueSend = True Loop bufEnd = fsize - (Seek(hf) - 1) If bufEnd > 0 Then ReDim bbuf(bufEnd) Get #hf, , bbuf tcpServer(Index).SendData bbuf End If Close #hf在啥问题呢?俺用VB做了一客户端接收一切OK。晕了!
LOF()得到的不就是BYTE 吗?
Open CheckFileDir For Binary As #hffsize = LOF(hf)
tcpServer(Index).SendData bbuf 'Dim bbuf() As Byte
这样得到的fsize和对方收到的信息的字节数不符吗
以下是我代码:
Const bufsize = 4096
'Const bufsize = 1024
Dim bbuf() As Byte
Dim hf As Integer
Dim fsize As Long
Dim bufEnd As Long
ReDim bbuf(0 To bufsize - 1)
hf = FreeFile()
Open CheckFileDir For Binary As #hf '是要发送的文件fsize = LOF(hf)
Do While (Seek(hf) - 1) + bufsize <= fsize
Get #hf, , bbuf
tcpServer(Index).SendData bbuf
ContinueSend = True
Loop
bufEnd = fsize - (Seek(hf) - 1)
If bufEnd > 0 Then
ReDim bbuf(bufEnd)
Get #hf, , bbuf
tcpServer(Index).SendData bbuf
End If
Close #hf在啥问题呢?俺用VB做了一客户端接收一切OK。晕了!
发送方,发送的是从文件中读出的Byte数组,接收方也必须用Byte数组接收,并按实际字节数写入文件。
你的方法,有可能是一个中文字符被分在前后两个包中,而产生了乱码,也可能是一个包因网络环境造成分割,而产生多次DataArrival事件。所以写入时,记住一定要按bytesTotal的实际字节数确认写入的字节数与在文件中的偏移量。