请选择 进入手机版 | 继续访问电脑版
查看: 10573|回复: 1919

[C/C++] 求解select函数为啥一直返回值为0

[复制链接]
  • TA的每日心情
    开心
    2016-11-2 23:21
  • 签到天数: 220 天

    [LV.7]常住居民III

    发表于 2016-1-27 11:08:54 | 显示全部楼层 |阅读模式
    [C++] 纯文本查看 复制代码
    int CConnectScan::scan(const char *IP,int start,int stop)
    {
    	WORD wVersion;
    	WSADATA WsaData;
    	int time;
    	struct timeval timeout;
    	struct fd_set fdset;
    	wVersion = MAKEWORD(2, 2);
    	if (WSAStartup(wVersion, &WsaData) != 0)    //初始化Winsock DLL
    	{
    		printf("未找到可用winsock.dll! \n");
    		return -1;
    	}
    	SOCKET PortScanSock = socket(AF_INET, SOCK_STREAM, 0);
    	unsigned long ul = 1;
    	if (ioctlsocket(PortScanSock, FIONBIO, (unsigned long*)&ul) == SOCKET_ERROR)
    		return 0;
    	SOCKADDR_IN ADDR;
    	ADDR.sin_family = AF_INET;
    	ADDR.sin_addr.S_un.S_addr = inet_addr(IP);
    	for (int Port = start; Port <= stop; Port++)
    	{
    		if (PortScanSock == NULL)
    			PortScanSock = socket(AF_INET, SOCK_STREAM, 0);
    		ADDR.sin_port = (Port);
    		connect(PortScanSock, (sockaddr*)&ADDR, sizeof(ADDR));
    		FD_ZERO(&fdset);
    		FD_SET(PortScanSock, &fdset);
    		timeout.tv_sec = 0;
    		timeout.tv_usec = 500 * 1000;
    		time = select(PortScanSock + 1, 0, &fdset, 0, &timeout);
    		PortDetil result;
    		result.PortNum = Port;
    		if (time <= 0)
    		{
    			result.OpenFlag = 0;
    			list.push_back(result);
    		}
    		else
    		{
    			result.OpenFlag = 1;
    			list.push_back(result);
    			closesocket(PortScanSock);
    			PortScanSock = NULL;
    		}
    	}
    }


    刚学网络编程不是很懂,select返回值一直为0,百度了一下没改过来==!好悲剧
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2020-9-14 23:06
  • 签到天数: 537 天

    [LV.9]以坛为家II

    发表于 2016-1-27 11:20:53 | 显示全部楼层
    刚学得有必要学的那么深吗?99乘法表那些算法懂了没?

    点评

    初学网络编程,不是初学编程,动态规划,贪婪这些算法也都学过了,虽然不精通懂得少,但至少会用可以做OJ的算法题。我问的不够谦虚?有必要提算法么?  详情 回复 发表于 2016-1-27 11:29
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-11-2 23:21
  • 签到天数: 220 天

    [LV.7]常住居民III

     楼主| 发表于 2016-1-27 11:29:41 | 显示全部楼层
    昊情· 发表于 2016-1-27 11:20
    刚学得有必要学的那么深吗?99乘法表那些算法懂了没?

    初学网络编程,不是初学编程,动态规划,贪婪这些算法也都学过了,虽然不精通懂得少,但至少会用可以做OJ的算法题。我问的不够谦虚?有必要提算法么?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2016-1-29 09:12:00 | 显示全部楼层
    学习学习技术,加油!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2016-1-29 15:02:20 | 显示全部楼层
    学习学习技术,加油!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2016-1-30 06:25:24 | 显示全部楼层
    还是不错的哦,顶了
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2015-6-21 22:12
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2016-1-30 09:54:18 | 显示全部楼层
    学习学习技术,加油!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2016-1-30 13:45:54 | 显示全部楼层
    感谢楼主的分享~
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2016-1-30 21:14:07 | 显示全部楼层
    还是不错的哦,顶了
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2016-1-30 23:59:53 | 显示全部楼层
    还是不错的哦,顶了
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    快速回复 返回顶部 返回列表