xdh0817 发表于 2013-09-26 18:47

有个问题, getsockopt第四个参数iOpt_Val没有变化

    val = fcntl(sockfd, F_GETFL, NULL);
        val |= O_NONBLOCK;
    fcntl(sockfd, F_SETFL, val);

    /* connect to ca */
    is_Err_Connect = connect(sockfd, (struct sockaddr*)&addr_server, sizeof(addr_server));
    if(is_Err_Connect < 0)
    {
      if(EINPROGRESS != errno)
      {
            close(sockfd);
            return -1;
                }
               
                time_Connect.tv_set = 3;
                time_Connect.tv_uset = 0;
                FD_ZERO(&Sock_Fds);
                FD_SET(sockfd, &Sock_Fds);
                maxfd = sockfd + 1;
                iRet_Select = select(maxfd, NULL, &Sock_Fds, NULL, &time_Connect);
      if(iRet_Select > 0)
      {
            iget_Sockopt = getsockopt(sockfd, SOL_SOCKET, SO_ERROR, &iOpt_Val, &sock_len);
                        if(ERROR_SUCCESS != iget_Sockopt)
                        {
                close(sockfd);
                return -1;
                        }
            if(ERROR_SUCCESS != iOpt_Val)
                    {
                            close(sockfd);
                return -1;
            }
      }
            else
                {
                  close(sockfd);
            return -1;
            }
    }
    else
        {
          close(sockfd);
      return -1;
    }


有个问题,
getsockopt(sockfd, SOL_SOCKET, SO_ERROR, &iOpt_Val, &sock_len);
第四个参数iOpt_Val没有变化,始终为初始值。为啥啊。。。郁闷了


xdh0817 发表于 2013-09-26 19:24

该问题已解决~

linux_c_py_php 发表于 2013-09-27 11:33

sock_len你没赋值长度, 必然有错.

xdh0817 发表于 2013-09-27 15:01


嗯,是的
我开始以为是个出参呢,原来是出餐也是入参

回复 3# linux_c_py_php


   

linux_c_py_php 发表于 2013-09-27 15:33

对的, 是in/out参数.
页: [1]
查看完整版本: 有个问题, getsockopt第四个参数iOpt_Val没有变化