2012-03-02 3 views
2

私はwinsockを使用するCでプログラムを作成していますが、fcntlコマンドを使用して受信呼び出しを非ブロックにしていますが、次のエラーが発生しています。ソケットプログラミングのためにwを使用する

warning C4013: 'fcntl' undefined; assuming extern returning int 
error C2065: 'F_SETFL' : undeclared identifier 
error C2065: 'F_GETFL' : undeclared identifier 
error C2065: 'F_SETFL' : undeclared identifier 
error C2065: 'O_NDELAY' : undeclared identifier 
error C2065: 'EWOULDBLOCK' : undeclared identifierenter code here 

#pragma comment(lib,"ws2_32.lib") 
#include <winsock2.h> 

を次のように私は私を助けてください私のコードでwinsock2.hヘッダファイルを含めています。 ありがとうございます。

答えて

7

fcntl()ではなくioctlsocketを使用する必要があります。

unsigned long off = 0; 
if (0 != ioctlsocket(socket_fd, FIONBIO, &off)) 
{ 
    /* Handle failure. */ 
} 

代わりEWOULDBLOCK使用WSAEWOULDBLOCKの:遮断するようにするには

unsigned long on = 1; 
if (0 != ioctlsocket(socket_fd, FIONBIO, &on)) 
{ 
    /* Handle failure. */ 
} 

:非ブロックを作るために

関連する問題