社区
网络编程
帖子详情
阻塞模式下,怎样接收,才不浪费接收时间。
Sander
2005-08-16 01:47:33
方法一。
设置timeout -----
请告诉我,这个要设吗,一般为多少比较适合。
方法二。
获得驱动缓冲的数据长度
recv(s, buf, len, flag)
这个len是驱动缓冲的数据长度。
请问哪种方法,比较好?或者有其他方法
...全文
385
23
打赏
收藏
阻塞模式下,怎样接收,才不浪费接收时间。
方法一。 设置timeout ----- 请告诉我,这个要设吗,一般为多少比较适合。 方法二。 获得驱动缓冲的数据长度 recv(s, buf, len, flag) 这个len是驱动缓冲的数据长度。 请问哪种方法,比较好?或者有其他方法
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
23 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Sander
2005-08-24
打赏
举报
回复
ok,结帖
guanglin_lv
2005-08-23
打赏
举报
回复
多线程+异步模式
最好的方法了
guanglin_lv
2005-08-23
打赏
举报
回复
当然是要采用多线程的,
本人刚开始搞WINCE, 请大家多多指教
我的QQ是75039960
MSN: guanglin_lv@msn.com
guanglin_lv
2005-08-23
打赏
举报
回复
fd_set fdRead;
SOCKET s;
TIMEVAL aTime;
char recvBuf[1024];
int recvLen;
aTime.tv_sec = 1;
aTime.tv_usec = 0;
FD_ZERO(&fdRead);
FD_SET(s,&fdRead);
ret = select(0,&fdRead,NULL,NULL,&aTime);
if (FD_ISSET(pSocket->m_socket,&fdRead))
recvLen = recv(pSocket->m_socket,recvBuf, 1024,0);
chenzunshi3
2005-08-22
打赏
举报
回复
http://www.somade.com/是个很专业的技术社区,去那里找找吧,或许有你要的答案~
basesky
2005-08-22
打赏
举报
回复
建议楼主采用异步方式,阻塞模式弄不好容易死掉哦。
Sander
2005-08-22
打赏
举报
回复
哦,忘了说明, 在wince.net 4.2一下, 5。0不知道
Sander
2005-08-22
打赏
举报
回复
TO: yzkzero(U)
没错,它有这些function,编译也不会有问题,但你可以试试,它就是不会工作。
Sander
2005-08-19
打赏
举报
回复
这里的超时,比方说1秒,是不是,只要你没有收到你要的字节数,就要等一秒。
----
为什么说用ioctlsocket()不好呢,这样我就知道最起码可以收这个数,肯定有呀。
不用浪费时间呀。
yzkzero
2005-08-19
打赏
举报
回复
WinCE只能用堵塞,不太可能吧,微软本来就不推荐用堵塞的方式。
况且在MSDN里,各种模式都有WinCE版本的,WSAEventSelect, 重叠IO的 WSASend, WSARecv 都可以在WinCE用的啊?
Sander
2005-08-19
打赏
举报
回复
TO: nuaawenlin(飘人)
我这是使用多线程呀, read, send都是呀。
nuaawenlin
2005-08-19
打赏
举报
回复
使用多线程
softrain
2005-08-18
打赏
举报
回复
我是说方法一,也就是设置超时时间是好的方法,最好使用它。
使用ioctlsocket(s, FIONREAD, &ulByteNum);也不好,降低了系统性能。最好是只管收,收到一定数据就处理,如果一次过来的数据太多,可以边处理边接收。
allen_zhaozhencn
2005-08-18
打赏
举报
回复
同步操作时设置超时
Sander
2005-08-17
打赏
举报
回复
up once.
Cocoky
2005-08-16
打赏
举报
回复
顶
Sander
2005-08-16
打赏
举报
回复
To:softrain(敢笑杨过不痴情)
不明白你说的什么:)
获得缓冲的数据长度可以通过IOCtrl
ioctlsocket(s, FIONREAD, &ulByteNum);
To:dirdirdir3(风)
对方数据是不定的,即使是定的,也不是你收到的,记住这个是tcp, 流模式。
dirdirdir3
2005-08-16
打赏
举报
回复
你预备着对方会发送多少字节来就接收多少个字节。
softrain
2005-08-16
打赏
举报
回复
最好方法一用上。另外没听说可以获取缓冲区长度,RECV是阻塞的,来数据才会返回,或者设置了超时到超时返回,数据长度从数据中获取。
Sander
2005-08-16
打赏
举报
回复
我这个是winCE的系统,必须是block的,
block也可以放在线程呀。
加载更多回复(3)
UDPClient 的奇特现象,实在搞不懂
探讨了在UDP服务端项目中遇到的问题:服务器在重启后一段
时间
内能正常为多个客户端提供服务,但在正常运行后数据开始变得不正常。详细描述了问题现象,包括旧连接数据异常和新连接能短暂正常工作的情况。分析了
接收
和发送过程中的异步和
阻塞
模式
,并讨论了
接收
缓冲区设置、连接限制和端口可用性的调整情况,最终寻求可能的解决方案。
突破编程_C++_网络编程(Windows 套接字(
阻塞
模式
与非
阻塞
模式
))
本文介绍了Windows套接字的
阻塞
与非
阻塞
模式
。
阻塞
模式
下,I/O操作不能立即完成时线程会被
阻塞
,适用于实时性要求不高、I/O操作不频繁的场景;非
阻塞
模式
下,操作会立即返回,线程不被
阻塞
,适用于实时性要求高、处理大量并发I/O的场景。还给出了两种
模式
的编程示例。
Socket的
阻塞
模式
和非
阻塞
模式
本文介绍了Socket的
阻塞
模式
和非
阻塞
模式
。在
阻塞
模式
下,执行I/O操作的函数会等待操作完成,可能导致线程
阻塞
;而非
阻塞
模式
下,函数会立即返回,通常返回WSAEWOULDBLOCK错误。
阻塞
模式
适合处理少量套接字,而非
阻塞
模式
适用于处理大量并发连接,但需要处理错误返回。
阻塞
模式
下的send、recv、close总结
本文详细解析了
阻塞
模式
下Socket的send、recv、close函数的工作原理,包括数据发送、
接收
过程中的注意事项,以及如何处理粘包、丢包等问题。
NIO下理解
阻塞
模式
和非
阻塞
模式
本文通过实例对比分析了NIO中的
阻塞
模式
与非
阻塞
模式
在网络IO中的表现,展示了不同
模式
下线程的行为特点及优缺点。
网络编程
18,356
社区成员
64,161
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章