社区
网络编程
帖子详情
select的问题?
ldsjlzy
2004-11-18 02:49:02
n1=select(socket_fd+1,&fdr,(fd_set *)0,(fd_set *)0,&timeout);
if (n1>0 && FD_ISSET(socket_fd,&fdr))
{
int nRet = recv(socket_fd,...)
}
以上代码,为什么select返回值大于0,而后接收数据时却为0呢(nRet = 0)?
...全文
270
12
打赏
收藏
select的问题?
n1=select(socket_fd+1,&fdr,(fd_set *)0,(fd_set *)0,&timeout); if (n1>0 && FD_ISSET(socket_fd,&fdr)) { int nRet = recv(socket_fd,...) } 以上代码,为什么select返回值大于0,而后接收数据时却为0呢(nRet = 0)?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
oyljerry
2004-11-18
打赏
举报
回复
recv可能有问题
ldsjlzy
2004-11-18
打赏
举报
回复
我是用循环调用select。
每次select的返回值要么就是0没有数据,要么就是大于0,没有SOCKET_ERROR的情况出现。
但是返回大于0时有时候却收不到数据recv返回为0,有时候却能正确收到数据。
danyueer
2004-11-18
打赏
举报
回复
M$说select函数第一个参数填不填都没关系,不过为了安全起见填个NULL好了。
baoxue10181018
2004-11-18
打赏
举报
回复
把socket_fd+1 改成0试一试,不过应该也没有关系的
9731boy
2004-11-18
打赏
举报
回复
UP.fd有时是非阻塞的,所以你要注意.另外.
你的recv对了吗?
ZHENG017
2004-11-18
打赏
举报
回复
select(socket_fd+1...);
socket_fd ???
select (1,...);
danyueer
2004-11-18
打赏
举报
回复
1 检查返回值 n1,假如 n1 == SOCKET_ERROR,则检查究竟出了什么错;
2 假如返回值不是SOCKET_ERROR,可能是你的Socket初始化有问题,把代码贴出来让大家进一步帮你解决。
Caps77
2004-11-18
打赏
举报
回复
不明白问题在哪里,我这里跟你几乎一样的代码不会有问题,你把socket_fd+1这个参数改成0试试~
sharkhuang
2004-11-18
打赏
举报
回复
其实你可以只设置可读哪位。
哦!是不是断开连接了?
ldsjlzy
2004-11-18
打赏
举报
回复
struct timeval timeout;
int n1;
fd_set fdr;
FD_ZERO(&fdr);
FD_SET(socket_fd,&fdr);
timeout.tv_sec=0;
timeout.tv_usec=1;
n1=select(socket_fd+1,&fdr,(fd_set *)0,(fd_set *)0,&timeout);
if (n1>0 && FD_ISSET(socket_fd,&fdr))
{
int nRet = recv(socket_fd,szRecvBuff,MAXBUFFLENGTH, 0);
}
看看有什么错?有时候n1返回大于0的情况下,有时候能正确收到数据,有时候收到0个数据。
danyueer
2004-11-18
打赏
举报
回复
你的fd设置是不是有问题?
Caps77
2004-11-18
打赏
举报
回复
看看recv后面的代码,应该是你的程序问题
SQL 查询语句先执行
SELECT
?兄弟你认真的么?
SQL 查询的执行顺序是怎样的? 好像这个
问题
应该很好回答,毕竟自己已经写了无数个 SQL 查询了,有一些还很复杂的。还装不了这个逼了?! 但事实是,我仍然很难确切地说出它的顺序是怎样的。 言归正传,
SELECT
语句的完整语法如下: 1.
SELECT
2. DISTINCT <
select
_list> 3. FROM <left_table> 4....
为什么不推荐使用
select
* ?是性能
问题
吗 ?
作者 孤独烟,中国平安研发工程师,目前负责云平台架构设计以及需求研发工作。毕业后一直从事Java开发工作,在Web开发、架构设计上有多年的实战经验。在MySQL性能优化、JVM调优、分布式领域有着丰富的经验。 引言 大家在开发中,还有很多童鞋在写查询语句的时候,习惯写下面这种不规范sql
select
* from table 而不写成下面的这种规范方式
select
col1,...
存储过程中如何根据参数是否为空执行不同的
select
??
存储过程中如何根据参数是否为空执行不同的
select
??假设表T1,其中有A1,A2,D1,D2等多个字段,A1,A2为varchar型,D1,D2为日期型。 传来四个参数,@A1,@A2,@D1,@D2,如果为空,则不必理会;如果不为空,则加到条件子句中。 如 @A1,@D1不空为,那么。 要执行
select
* from t1 where a1=@A1 and d1>=@D1 如果@A2,
遇到el-
select
选项被遮挡
问题
?这篇文章告诉你如何解决
遇到el-
select
选项被遮挡
问题
?这篇文章告诉你如何解决
angularjs动态为
select
创建
赋值出现 ?:String:XXXXX?的
问题
之前从未接触过angularjs ,而且这次开发也是基于ionic1.+的版本,使用的环境都是之前没接触过的,而且不是那么新的东西,所以局限性很多,反正我就是没办法了用的下面这种方式写的下拉框 取值是ajax从后端取的,这么写,值是能取到,但是我想给个默认值,花费了好久的时间,我使用 $("#qu").attr("value", result.obj.qu+"");赋值,最后页面...
网络编程
18,358
社区成员
64,165
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章