winsock接收rtf文件的问题,高手帮忙!!

czmcjixiangyang 2008-04-21 11:38:56
小弟做了客户端和服务器的程序,是基于winsock的,下面是代码:
客户端:
Private Sub Command1_Click()
Winsock1.RemoteHost = "127.0.0.1"
Winsock1.RemotePort = 3000
Winsock1.Connect

End Sub
Private Sub Command5_Click()
Open "c:\test.rtf" For Binary As #1
Put #1, 1, RichTextBox1.TextRTF
Close #1


Dim a() As Byte
Open "c:\test1.rtf" For Binary As #1
ReDim a(1 To LOF(1))
Get #1, , a
Close #1
Winsock1.SendData a
End Sub

服务器端程序:

Private Sub Form_Load()
Winsock1.LocalPort = 3000
Winsock1.Listen
End Sub

Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
If Winsock1.State <> sckClosed Then Winsock1.Close
Winsock1.Accept requestID
End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim a() As Byte
ReDim a(1 To bytesTotal)

Winsock1.GetData a
Open "c:\b.rtf" For Binary As #1
Put #1, 1, a
Close #1
End Sub
现在问题是这个样子的:如果客户端发送的是字符串,在服务端的接收到数据后文件"c:\b.rtf"里面可以看到是正常是文件;如果富文本框RichTextBox1里面包含了图片后,当发送的时候同时保存了该文件的一个副本"c:\test1.rtf",文件和test.rtf一样没区别,但是在服务前端接收的文件"c:\b.rtf"里面显示的很多数字。另外如果发送doc,xls等文件,如果里面含有图片的话,在接收端也显示不出正确的格式来。我该怎么获取原始文件,或者怎么接收使得"c:\b.rtf"文件和原始文件一样。请高手帮忙!!
...全文
50 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
showtong 2008-12-20
  • 打赏
  • 举报
回复
客户端每次发送的数据大小是由限制的,大概是8k,你在发送的时候要把大的文件分块在传送
czmcjixiangyang 2008-04-21
  • 打赏
  • 举报
回复
这个问题对于文本文件没有区别,发送次数多了,自动在后面追加数据,难道doc,xls文件用其他的操作吗?高手请帮忙呀!
czmcjixiangyang 2008-04-21
  • 打赏
  • 举报
回复
现在自己知道问题出来哪了,在服务端接收数据的代码应该改成这个样子
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim a() As Byte
ReDim a(1 To bytesTotal)

Winsock1.GetData a
Open "c:\b.rtf" For Binary As #1
if lof(1)=0 then'''加上
Put #1, 1, a
else'''加上
Put #1, lof(1)+1, a '''加上
end if'''加上
Close #1
End Sub

现在能保存文件了,但是又出了个新的问题,就是如果发送2次数据,接收端的接收到数据后按照上面的程序是要追加到原来的文件后面的,但是实际中,文件的长度确实是增加了,变成了原来的2倍,但是,当打开文件后,文件的内容却没有变化,不知道是怎么回事情,这部分数据到底隐藏到哪了。然而如果在用二进制打开c:\b.rtf这个文件,然后在写到一个c:\bb.rtf文件里面去,显示的内容和c:\test.rtf一样,单是所占的字节数和c:\b.rtf一样。不知道这是怎么回事情,高手帮忙呀!!

1,502

社区成员

发帖
与我相关
我的任务
社区描述
VB 网络编程
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧