2015-05-16 31 views
0

我正在Windows窗體應用程序中進行套接字編程(UDP套接字)。我想使用select()。調用UDP套接字中的Select()時出錯

在按鈕單擊時調用socket(),在不同的線程中調用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  

錯誤,我無法理解,我做錯了。

+0

你確定你沒有宣佈名爲'select'在上下文給出錯誤另一個變量?另外,您是否查找了錯誤消息的文檔(https://msdn.microsoft.com/en-us/library/z72c1dfd.aspx)? – alk

+0

@alk是的,當我評論選擇然後沒有錯誤 –

+0

@alk我已經寫在控制檯應用程序相同的代碼,它工作正常 –

回答

1

你可能是通過用這個名字定義了另一個可變參數來「隱藏」winsock庫的函數select()

此代碼

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

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

將由 「陰影」 的功能select()與可變int selecterror C2064

爲了解決這個問題重命名

int select; 

int select_whateveryoulike;