社区
网络编程
帖子详情
如何将Send()设置为非阻塞模式?
wanmoxiaosheng
2007-06-21 09:31:53
刚开始学网络编程,采用阻塞模式向服务器发送数据,结果发送一段时间以后发生阻塞,成为处理瓶颈。如何解决这个问题?听说非阻塞模式可以解决,那么如何将Send()设置为非阻塞模式呢?
感谢你的关注。
...全文
1338
17
打赏
收藏
如何将Send()设置为非阻塞模式?
刚开始学网络编程,采用阻塞模式向服务器发送数据,结果发送一段时间以后发生阻塞,成为处理瓶颈。如何解决这个问题?听说非阻塞模式可以解决,那么如何将Send()设置为非阻塞模式呢? 感谢你的关注。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
17 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wynney
2007-07-24
打赏
举报
回复
/*设置发送超时6秒*/
int TimeOut = 6000;
if( ::setsockopt(uSock,SOL_SOCKET,SO_SNDTIMEO,(char*)&TimeOut,sizeof(TimeOut)) == SOCKET_ERROR )
{
WSACleanup( );
}
/*设置接收超时11秒*/
TimeOut = 11000;
if( ::setsockopt(uSock,SOL_SOCKET,SO_RCVTIMEO,(char*)&TimeOut,sizeof(TimeOut)) == SOCKET_ERROR )
{
WSACleanup( );
}
wanmoxiaosheng
2007-07-24
打赏
举报
回复
感谢各位的热心答复,等我把这个问题弄清除了再给大家得分.
wanmoxiaosheng
2007-07-24
打赏
举报
回复
感谢Big_Stone,我的邮箱地址为wanmoxiaosheng@gmail.com.
Big_Stone
2007-07-03
打赏
举报
回复
还可以用重叠I/O进行处理
Big_Stone
2007-07-03
打赏
举报
回复
u_long ul = 1L;
nRet = ioctlsocket(m_sockDesc, FIONBIO, (u_long FAR *)&ul);
if(SOCKET_ERROR == nRet)
------------------------------------------------------------
就是这样的,留下个EMAIL,我给你个完整的例子
yuyizhi
2007-07-03
打赏
举报
回复
改成非阻塞unsigned long int flag=1;
result=ioctlsocket(client,FIONBIO,&flag);
然后send()
再//set back to block mode咯
flag=0;
result=ioctlsocket(client,FIONBIO,&flag);
或设定超时setsockopt(client,SOL_SOCKET,SO_SNDTIMEO,(const char *)&sendtimeout,sizeof(sendtimeout)然后closesocket()?
redex
2007-07-03
打赏
举报
回复
Avoid(千金散去还复来), glunoy():
send确实会阻塞, 测试方案如下:
一个阻塞式客户端, 连一个阻塞式服务器, 服务器向客户端发大量数据,
但客户端模拟读数据非常慢的情况(读一次休息几秒钟), 当服务器端发送
缓冲区满时, 注意!!! send不出错,不返回,阻塞了!
"send不会阻塞" 这种说法太普遍了, 但好象实际动手测试的人很少啊...
WizardK
2007-07-02
打赏
举报
回复
你说的是RECV吧
xiaodongdehome
2007-07-02
打赏
举报
回复
按 2楼的, 把 socket 设置成 异步模式 没错!
WindRand
2007-07-02
打赏
举报
回复
你应该是把套接字设置为非阻塞模式,用ioctlsocket来完成。
aj3423
2007-07-01
打赏
举报
回复
“send会阻塞?
没听说过。。。”
我也觉得这样,send发送完了不就自动执行下面的代码了吗
hdqqq
2007-07-01
打赏
举报
回复
用WSASend,然后可以通过事件等待或者用完成端口处理.
glunoy
2007-07-01
打赏
举报
回复
send 是把东西放到系统的发送缓冲区并立即返回,不会引起所谓的阻塞。只有在缓冲区已满时返回一个异常。
Avoid
2007-06-30
打赏
举报
回复
send会阻塞?
没听说过。。。
wanmoxiaosheng
2007-06-30
打赏
举报
回复
有完整地例子吗?
ouyh12345
2007-06-21
打赏
举报
回复
好象不能光把send设为非阻塞。
u_long ul = 1L;
nRet = ioctlsocket(m_sockDesc, FIONBIO, (u_long FAR *)&ul);
if(SOCKET_ERROR == nRet)
{
sprintf( m_pszError, "Winsock error : %s (Error Code %d)\n", "Nonblocking socket call error", WSAGetLastError());
return FALSE;
}
ul为0时为阻塞,不为0时为非阻塞
wanmoxiaosheng
2007-06-21
打赏
举报
回复
补充一点,我使用的是Win32 API函数。
【科研数据处理】逐步讲解Word2019中公式居中以及编号靠右
设置
Word2019中公式居中以及编号靠右
设置
1 准备2
设置
编号靠右对齐3 公式居中 手动反爬虫,禁止转载:原博地址 https://blog.csdn.net/lys_828/article/details/122354070(CSDN博主:Be_melting) 知识梳理不易,请尊重劳动成果,文章仅发布在CSDN网站上,在其他网站看到该博文均属于未经作者授权的恶意爬取信息 1 准备 针对于Word为2019版本,新建一个空白的Word文件,如下 然后任意插入两三行公式,操作步骤如下。 然后在公式框
Python的神奇力量:揭秘少见的Word操作技巧
在许多业务场景中,我们常常需要处理Word文档,例如提取文档信息、进行文档编辑、甚至生成新的文档。然而,这通常涉及到复杂的手动操作,效率低下且容易出错。有没有一种方法可以自动化这些任务,让我们的工作更加轻松呢?答案是有的。通过Python,我们可以轻松地实现这些操作。在这篇文章中,我们将揭秘Python在Word操作上的神奇力量,探索一些你可能从未听说过的技巧。我们将使用库,这是一个非常强大的库,可以让我们轻松地创建、查询和修改Word文档。让我们开始吧!
Word2010中神奇的Alt键
/* Word2010中神奇的Alt键 转载请保留本文链接地址 作者:Ralin QQ:64607646 */ 打开Word2010,然后点击键盘上的Alt键,这个时候大家可以看到这样的界面 上面油数字,还有字母,然后随便点击键盘上对应的数字1、2、3或者字母
中考计算机word操作题,【信息技术中考专区】Word操作题专练(二)
原标题:【信息技术中考专区】Word操作题专练(二)微机中考·Word操作题▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼往年中考微机中Word操作题中用到的均为2010版这个需要特别注意!下面我们就开始练习吧!▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲Word操作题...
3d建模文件鼠标拖拽旋转效果_Word的这个3D模型新功能,真是太神奇了
3D模型不会用三维软件建造的立体模型吗?怎么可能会跑到Word中去了呢?是的,你没看错,在Word 2019版本中,通过3D模型功能,可以快速将三维软件制作的,或者网上下载的3D模型插入到Word中,并且还可以对3D模型进行编辑,是不是非常不错呢?今天,我们就来通过Word 2019的3D模型功能插入3D模型的具体方法。1.插入3D模型通过Word 2019中提供了3D模型功能,可以在文档中插入F...
网络编程
18,356
社区成员
64,161
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章