Winsock傳送文件,不知道文件是否傳送完成?

cainiaobus 2004-12-22 05:35:17
用Winsock傳送一個大文件,在傳送完成后,我想結束這個連線,包括Server端和Client端
現在的問題是:我不知道傳送完成了?
比如:從Server端傳送一個文件到客戶端,傳送完成后,Server,因為有SendComplete, 但客戶端並不知道文件傳送完成了,那該怎麼辦?
...全文
143 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
cainiaobus 2004-12-23
  • 打赏
  • 举报
回复
謝謝helanshan(C++)
已解決了
helanshan 2004-12-23
  • 打赏
  • 举报
回复
从你说的情况看,可能最后一个正文数据包缓冲区未满,发送的消息添加到缓冲区一块发送的..
那你就根据客户端来判断吧..服务器端先把文件大小传送到客户端..
cainiaobus 2004-12-23
  • 打赏
  • 举报
回复
TO:helanshan(C++)
客戶端接收不到OVER數據,因為OVER跟著正文數據包的末尾傳送出去了(好奇怪!),
我的代碼如下:

服務器端:發送完文件后,接著發了一個消息
tcpServer.SendData "over"

客戶端:
bytearr()为接收数据数组
dim intnum as inteder
dim strnum as string
for intnum=3 to 0 step -1
strnum=strnum+chr(bytearr(bytesTotal-intnum)) '从数组中提取4个字节数据,并转换为字符
next
if strnum="over" then '如果消息是over
.........'关闭文件代码 '文件传输结束,关闭文件
exit sub
else
..........'继续接收代码
end if

上面這樣可以接收到OVER(在最后一個包中),但這個包同時含有文件的正文數據,
得把前面bytearr( 0 to bytesTotal-4)存到文件中

不知道這是為什麼?
如果有人答對此問題,加50分結貼,
如果沒有,那我就今天結貼了

helanshan 2004-12-22
  • 打赏
  • 举报
回复
我要傳送的文件是二進制文件,如果要從服務器端發消息通知客戶端,在客戶端接收信息后,
不知道怎樣區分哪個是控制消息,那個是要傳送過來的二進制文件
**************************************************************************
服务器端在发送完文件后,发送一个消息:
Me.Winsock1.SendData "over"
客户端:
bytearr()为接收数据数组
dim intnum as inteder
dim strnum as string
for intnum=0 to 3
strnum=strnum+chr(bytearr(intnum)) '从数组中提取4个字节数据,并转换为字符
next
if strnum="over" then '如果消息是over
.........'关闭文件代码 '文件传输结束,关闭文件
exit sub
else
..........'继续发送代码
end if
zyg0 2004-12-22
  • 打赏
  • 举报
回复
在2进制文件加个头就能标石了不是吗?
helanshan 2004-12-22
  • 打赏
  • 举报
回复
1、由客户端判断:
前提是服务器在发送文件前,先发送一个文件大小的数据包,客户端根据文件大小判断是否发送完毕。
2、由服务器端判断:
如果发送完成,发送一个特定的通知消息,客户端根据消息确认文件发送完成。
3、简单点的:
服务器发送完文件后,关闭连接,客户端根据winsock1.state状态判断是否发送完成。
cainiaobus 2004-12-22
  • 打赏
  • 举报
回复
TO:pcwak tztz520
我要傳送的文件是二進制文件,如果要從服務器端發消息通知客戶端,在客戶端接收信息后,
不知道怎樣區分哪個是控制消息,那個是要傳送過來的二進制文件

有沒有範例給我一份,就是客戶端接收時,區分控制消息與要傳輸入的文件正文
tztz520 2004-12-22
  • 打赏
  • 举报
回复
发送前应该首先发一个包过去,就是标明这人文件的大小,客户端根据这个来判断文件是否传送完毕,如果传送完成后就发回来一个包,告诉服务器说完成了.
pcwak 2004-12-22
  • 打赏
  • 举报
回复
SendComplete事件
发消息通知客户端

1,502

社区成员

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

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