看了论坛里关于send时产生WSAEWOULDBLOCK的处理,仍有疑问.
搜索了一下论坛里关于send时产生WSAEWOULDBLOCK时的处理办法,得出如下结论:
1.产生这个错误只是说明out buffer已经满了,不代表出错.
2.可以等待FD_WRITE消息,此时将没有发送完成的数据再次发送出去.
但还是有疑问,我的问题如下:
1.我上面的两条结论正确吗?
2.关于在FD_WRITE里把没有发送完的数据发送完,这一点如何做到呢?因为
int nSended = send(mysock, myBuf, myLen, 0);
如果此时产生WSAEWOULDBLOCK,那么nSended肯定是SOCKET_ERROR,也就是-1了.此时nSended不能代表已经发送成功的字节数,那么在myBuf这个缓冲区里,究竟有多少字节是已经发送出去的,有多少数据是没有发送出去的呢?
在我的程序时,我想在得到WSAEWOULDBLOCK时,将没有发送完的数据缓冲起来,等到FD_WRITE时,再将这些数据发送出去.所以还请大侠们指点一下,在这种情况下,如何知道有多少数据是被发送了的.
:_)
1.产生这个错误只是说明out buffer已经满了,不代表出错.
2.可以等待FD_WRITE消息,此时将没有发送完成的数据再次发送出去.
但还是有疑问,我的问题如下:
1.我上面的两条结论正确吗?
2.关于在FD_WRITE里把没有发送完的数据发送完,这一点如何做到呢?因为
int nSended = send(mysock, myBuf, myLen, 0);
如果此时产生WSAEWOULDBLOCK,那么nSended肯定是SOCKET_ERROR,也就是-1了.此时nSended不能代表已经发送成功的字节数,那么在myBuf这个缓冲区里,究竟有多少字节是已经发送出去的,有多少数据是没有发送出去的呢?
在我的程序时,我想在得到WSAEWOULDBLOCK时,将没有发送完的数据缓冲起来,等到FD_WRITE时,再将这些数据发送出去.所以还请大侠们指点一下,在这种情况下,如何知道有多少数据是被发送了的.
:_)
...全文
相关推荐
socket send和recv详解
send 和recv 详解,绝对好东西。
send函数 和recv函数
里面有socket函数和recv函数的详细讲解,有用
Socket send函数和recv函数详解
不论是客户还是服务器应用程序都用send函数来向TCP连接的另一端发送数据。
FPGA实现QPSK信号的产生 其中定义随机信号data-send的产生来自由matlab随机产生的数据文件定义 后面在仿真所用的tb文件进行读取相应文件进行仿真
FPGA实现QPSK信号的产生 其中定义随机信号data_send的产生来自由matlab随机产生的数据文件定义。 后面在仿真所用的tb文件进行读取相应文件进行仿真。
基于nodejs res.end和res.send的区别
今天小编就为大家分享一篇基于nodejs res.end和res.send的区别,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧


网络编程
