在 UDP 套接字中调用 Select() 时出错

Error while calling Select() in UDP sockets

我正在 Windows 表单应用程序中进行套接字编程(UDP 套接字)。我想使用 select().

单击按钮时调用 socket(),select() 在不同线程中调用,套接字描述符声明为全局。

下面是我关于 select 的部分代码:

    fd_set fds;
    struct timeval tv;
    tv.tv_sec = 1;
    tv.tv_usec = 500000;
    FD_ZERO(&fds);
    FD_SET(s_8888, &fds);
    int n=s_8888;  //s_8888 is socket descriptor
    select (n+1, &fds, 0 , 0 , &tv );

当我编译代码时出现以下错误

error C2064: term does not evaluate to a function taking 5 arguments    

我无法理解我哪里做错了。

您可能 "shadowing" winsock 库的函数 select() 定义了另一个具有此名称的变量。

这个代码

#include <Winsock2.h> /* Provide prototype for select(). */

void foo(void)
{
  int select;
  ...
  select(0, 0, 0, 0, 0);

将通过 "shadowing" 函数 select() 和变量 int select.

激发 error C2064

修复此重命名

  int select;

  int select_whateveryoulike;