一个关于FD_CLOSE的问题

flyhigh 2007-05-09 02:16:37
我利用Socket做文件传输,一个传输任务一个线程。
问题是如果我多个任务一起工作的时候,经常发送端发送完成并关闭Socket后,接收方会收到FD_CLOSE,但是数据却还没有接收完成。
百思不得其解,请各位指点!谢谢!
...全文
509 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
flyhigh 2007-05-13
  • 打赏
  • 举报
回复
在发送端发送完成后调用了closesocket
多个任务就是多个线程同时传送多个文件。可能同时接收和发送。
DentistryDoctor 2007-05-13
  • 打赏
  • 举报
回复
是不是发送端调用了closesocket?
多个任务一起工作是什么含义?同时传多个文件,没有多线程吧?
flyhigh 2007-05-13
  • 打赏
  • 举报
回复
主动接收?
文件传输协议已经有了,而且速度也还行。
CathySun118 2007-05-12
  • 打赏
  • 举报
回复
1.改为主动接收,就不会有这个问题
flyhigh 2007-05-12
  • 打赏
  • 举报
回复
我就是用的消息机制。
用结束标志等显然不行:因为网络可能中断。而且我已经有了数据长度。
Elysium 2007-05-09
  • 打赏
  • 举报
回复
用消息机制,或者自己控制数据结束完后再close
su47flying 2007-05-09
  • 打赏
  • 举报
回复
1.每次发送完,你可以在发送端发送一个结束命令,接受端根据命令关闭socket.
2.在接收端根据你传送的文件的大小判断是否已经接受完毕。然后关闭socket.
laofang 2007-05-09
  • 打赏
  • 举报
回复
sleep a while then close the socket, since the packet may delay a while on the network

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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