【问题标题】:Using winsock for socket programming in cc语言中使用winsock进行socket编程
【发布时间】:2012-03-21 00:04:17
【问题描述】:

我正在用 C 语言编写一个使用 winsock 的程序,并且我正在使用命令 fcntl 使接收呼叫成为非阻塞,我收到以下错误。

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

我在代码中包含了 winsock2.h 头文件,如下所示

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

请帮帮我。 提前致谢。

【问题讨论】:

    标签: c winsock winsock2


    【解决方案1】:

    我认为在 Windows 上您需要使用 ioctlsocket 而不是 fcntl()

    非阻塞:

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

    进行阻塞:

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

    WSAEWOULDBLOCK代替EWOULDBLOCK

    【讨论】:

      猜你喜欢
      • 2014-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-17
      相关资源
      最近更新 更多