社区
网络编程
帖子详情
阻塞模式下,怎样接收,才不浪费接收时间。
Sander
2005-08-16 01:47:33
方法一。
设置timeout -----
请告诉我,这个要设吗,一般为多少比较适合。
方法二。
获得驱动缓冲的数据长度
recv(s, buf, len, flag)
这个len是驱动缓冲的数据长度。
请问哪种方法,比较好?或者有其他方法
...全文
390
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服务端。是通过UDPCLIENT 的一个实例(同一端口)提供收发服务。 当项目上线测试后,奇怪的现象发生。如果重启过服务器的话,服务器可以运行一段较长
时间
无异常。但一段
时间
之后,奇怪的事情来了。 1、例如之前有A\B\C等N个客户端已经连接到服务端,服务端一直持续为它们 提供服务,然后在正常运行一段
时间
后,ABC的数据都会变得不正常,服务端无法再正常解析数据提供服务了...
突破编程_C++_网络编程(Windows 套接字(
阻塞
模式
与非
阻塞
模式
))
C++ 网络编程:Windows 套接字(
阻塞
模式
与非
阻塞
模式
)
Socket --
阻塞
模式
(1)
阻塞
模式
Windows套接字在
阻塞
和非
阻塞
两种
模式
下执行I/O操作。在
阻塞
模式
下,在I/O操作完成前,执行的操作函数一直等候而不会立即返回,该 函数所在的线程会
阻塞
在这里。相反,在非
阻塞
模式
下,套接字函数会立即返回,而不管I/O是否完成,该函数所在的线程会继续运行。在
阻塞
模式
的套接字上,调用任何一个Windows Sockets API都会耗费不确定的等待
时间
。图所示,在调用
阻塞
模式
下的send、recv、close总结
阻塞
模式
下的send、recv、close总结
NIO下理解
阻塞
模式
和非
阻塞
模式
NIO下理解
阻塞
模式
和非
阻塞
网络编程
18,356
社区成员
64,161
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章