send总是返回-1

codearts 2007-06-07 11:33:10
WSAAsyncSelect, non-block模式

send(...)在发送1000个数据包后,总是返回-1, GetLastError()返回WSAEWOULDBLOCK.

此后,等待3分种再send(...),还是返回-1, GetLastError()返回WSAEWOULDBLOCK.也就是不能再发送数据了.

...全文
932 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
xieqq8 2008-10-31
  • 打赏
  • 举报
回复
我今天就一个发送,接收还报错!SOCKET的程序真是不好查呀!
codearts 2007-06-08
  • 打赏
  • 举报
回复
>WSAEWOULDBLOCK说明网络层来不及发送你的消息导致发送缓冲满了,等待一段时间等数据发送到
>对方,发送缓冲有空闲了,就可以继续发送了

问题就在于,发送缓冲一直是满的!!!
这个时候, 在send(..)上设置断点,等待3分钟再执行,结果总是返回WSAEWOULDBLOCK错误了
fantiyu 2007-06-08
  • 打赏
  • 举报
回复
出现这个情况说明发送方数据缓冲区满了, 问题在于你接收方收数据了吗?
如果你测试的时候只发不收, 不管多大缓冲区,早晚都会满
hamimelon 2007-06-07
  • 打赏
  • 举报
回复
WSAEWOULDBLOCK
The socket is marked as nonblocking and the requested operation would block.
Analyst 2007-06-07
  • 打赏
  • 举报
回复
WSAEWOULDBLOCK说明网络层来不及发送你的消息导致发送缓冲满了,等待一段时间等数据发送到对方,发送缓冲有空闲了,就可以继续发送了。如果你用的是block模式的话,则send函数会阻塞,直到发送缓冲有空闲。
mynamelj 2007-06-07
  • 打赏
  • 举报
回复
用异步函数WSASend

TO:Ctoyun(林莉)
--------------------
得的这个分是不能够作为提问的分
jazy 2007-06-07
  • 打赏
  • 举报
回复
WSAEWOULDBLOCK.也不是失败,返回这个socket还是保存了要send的数据,不用处理什么。你可以试试接收,接收方会收得到,不丢数据
Ctoyun 2007-06-07
  • 打赏
  • 举报
回复
我虽然没有回答您的问题,但也帮您顶了下,求您给小女几分好吗?我非专业,但需要点分提问啊!

呵呵,谢谢!!
anjuta_c 2007-06-07
  • 打赏
  • 举报
回复
是否FD_WRITE才执行的send?

如果你在FD_WRITE下执行一个while {send},这样是不对的,很容易返回WSAEWOULDBLOCK。

应该收到FD_WRITE一次,send一次,然后移动当前发送缓冲区的指针
CathySun118 2007-06-07
  • 打赏
  • 举报
回复
http://book.hackbase.com/data/web5004/20050417/20050417__3887277.html

18,356

社区成员

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

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