社区
网络编程
帖子详情
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)?
...全文
244
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后面的代码,应该是你的程序问题
go如何终止for
select
循环?
go如何终止for
select
循环?
SQL 查询语句先执行
SELECT
?兄弟你认真的么?
好像这个
问题
应该很好回答,毕竟自己已经写了无数个 SQL 查询了,有一些还很复杂的。还装不了这个逼了?! 但事实是,我仍然很难确切地说出它的顺序是怎样的。 言归正传,
SELECT
语句的完整语法如下: 1. ...
为什么不推荐使用
select
* ?是性能
问题
吗 ?
作者 孤独烟,中国平安研发工程师,目前负责云平台架构设计以及需求研发工作。毕业后一直从事Java开发工作,在Web开发、架构设计上有多年的实战经验。在MySQL性能优化、JVM调优、分布式...
select
col1,col2,…,co...
MYSQL-谨慎使用
select
* ?
MYSQL-谨慎使用
select
* 每次在写查询语句的时候,都需要用怀疑的眼光审视,是不是真的需要返回全部的列,确定要使用
SELECT
* FROM? 错误方式:
Select
* from TblA; 这将取出表的全部列,会让MYSQL...
到底为什么不建议使用
SELECT
*?
“不要使用
SELECT
*”几乎已经成为了MySQL使用的一条金科玉律,就连《阿里Java开发手册》也明确表示不得使用`*`作为查询的字段列表,本文从4个方面给出理由。
网络编程
18,356
社区成员
64,214
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章