社区
网络编程
帖子详情
阻塞模式下,怎样接收,才不浪费接收时间。
Sander
2005-08-16 01:47:33
方法一。
设置timeout -----
请告诉我,这个要设吗,一般为多少比较适合。
方法二。
获得驱动缓冲的数据长度
recv(s, buf, len, flag)
这个len是驱动缓冲的数据长度。
请问哪种方法,比较好?或者有其他方法
...全文
343
23
打赏
收藏
阻塞模式下,怎样接收,才不浪费接收时间。
方法一。 设置timeout ----- 请告诉我,这个要设吗,一般为多少比较适合。 方法二。 获得驱动缓冲的数据长度 recv(s, buf, len, flag) 这个len是驱动缓冲的数据长度。 请问哪种方法,比较好?或者有其他方法
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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)
Linux UDP socket 设置为的非
阻塞
模式
与
阻塞
模式
区别
主要介绍了Linux UDP socket 设置为的非
阻塞
模式
与
阻塞
模式
区别的相关资料,需要的朋友可以参考下
Protues 51单片机 串口不定长
接收
非
阻塞
模式
.zip
本程序基于Protues实现了:51单片机,在非
阻塞
模式
下,利用串口可以
接收
不固定长度数据帧。如果要与电脑实现通信,请使用串口调试软件配合,注意配置protues中的串口号和波特率,与电脑保持一致。
阻塞
通信和非
阻塞
通信
MPI编程的
阻塞
通信和非
阻塞
通信的区别,如何使用!
C++非
阻塞
式读取UDP,串口方式总结.txt
使用C++撰写,非
阻塞
是的读取UDP,串口方式。串口数据,UDP数据一般采用
阻塞
式的方式,很多时候,整个程序如果没有
接收
到新的数据,那么程序就会一直等待
接收
数据,造成程序等待
接收
数据的状态,blockingread,无法正常向下运行,直到
接收
到新的数据,这种
阻塞
式方式缺点是会造成资源
浪费
,为了避免
阻塞
式程序导致程序被堵住,不往下执行,一种方式:采用多线程的方式,另外一种方式采用非
阻塞
的方式。 对于程序功能单一的传感器
接收
解析程序,可以采用
阻塞
式的方式,但是对于实时性要求高的复杂功能程序,不能因为传感器没有新数据,而停止不前,于是可以考虑最多等待多长
时间
,如果没有数据后,程序也正常向下执行:
商业编程-源码-多线程,多
接收
模式
串口类LsComm.zip
商业编程-源码-多线程,多
接收
模式
串口类LsComm.zip
网络编程
18,363
社区成员
64,187
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章