选择并接受值,ftp创建

时间:2013-07-27 22:27:29

标签: sockets

  while (1)
    {
      FD_ZERO(&readfs);
      readfs = add_clients_to_readfs(list_fd);
      select(get_max_fd(list_fd) + 1, &readfs, NULL, NULL, NULL);

      if (FD_ISSET(fd_socket, &readfs))
        {
          if (fd_client = (xaccept(fd_socket, (struct sockaddr *)s_in_client, &s_in_size)) != -1)
            {
              printf("FD_CLIENT %i\n", fd_client);
              add_client_to_list(list_fd, fd_client);
            }
        }

我在循环开始时有FD_ZERO,这是一个函数add_clients_to_readfs,它使用我的列表中的文件描述符重新启动readfds fd_set,这是一个经典的select。在循环之前,我已经在我的列表上推送了选择fd,如果FD_ISSET做出反应,它是一个新的客户端连接,所以我接受客户端并在列表中添加他的fd。但我在printf中的fd_client总是1.你有什么想法吗?

1 个答案:

答案 0 :(得分:1)

运营商优先问题。

if (fd_client = (xaccept(fd_socket, (struct sockaddr *)s_in_client, &s_in_size)) != -1)

应该是

if ((fd_client = xaccept(fd_socket, (struct sockaddr *)s_in_client, &s_in_size)) != -1)