社区
网络编程
帖子详情
阻塞模式下,怎样接收,才不浪费接收时间。
Sander
2005-08-16 01:47:33
方法一。
设置timeout -----
请告诉我,这个要设吗,一般为多少比较适合。
方法二。
获得驱动缓冲的数据长度
recv(s, buf, len, flag)
这个len是驱动缓冲的数据长度。
请问哪种方法,比较好?或者有其他方法
...全文
381
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 --
阻塞
模式
本文详细介绍了Windows套接字在
阻塞
模式
下的工作原理,并通过具体的Server端和Client端源码示例,展示了如何实现基于
阻塞
模式
的套接字通信。
Socket的
阻塞
模式
和非
阻塞
模式
本文介绍了Socket的
阻塞
模式
和非
阻塞
模式
。在
阻塞
模式
下,执行I/O操作的函数会等待操作完成,可能导致线程
阻塞
;而非
阻塞
模式
下,函数会立即返回,通常返回WSAEWOULDBLOCK错误。
阻塞
模式
适合处理少量套接字,而非
阻塞
模式
适用于处理大量并发连接,但需要处理错误返回。
阻塞
模式
下的send、recv、close总结
本文详细解析了
阻塞
模式
下Socket的send、recv、close函数的工作原理,包括数据发送、
接收
过程中的注意事项,以及如何处理粘包、丢包等问题。
网络编程
18,357
社区成员
64,165
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章