c++ 如何在Windows和MinGW上使用'fcntl'?

osh3o9ms  于 2023-06-07  发布在  Windows
关注(0)|答案(2)|浏览(389)

我试图端口一个TCP应用程序(特别是tcpsockets),但我得到这个错误:
错误:'fcntl'未在此作用域中声明
我已经写了那些包括

#ifdef WIN32
#define _WIN32_WINNT  0x0600 //enable

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

typedef int socklen_t;
void close(int socket){closesocket(socket);}

#else

#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>

#endif

这解决了大部分的参考,但fcntl没有找到。我怎样才能找到一个适当的参考呢?或者说,有没有另一种windows方法可以取代它?

ve7v8dk2

ve7v8dk21#

fcntl()在Windows上不存在。对于套接字,等效函数是ioctlsocket()。但是,Linux中套接字上的文件控制与Windows中的有很大不同,因此您使用的所有fcntl()命令可能根本无法移植到Windows,或者它们可能需要不同的API。

bt1cpqcv

bt1cpqcv2#

不知道为什么要使用本机套接字。但是如果没有真实的的原因,可以看看QTcpSocket。它是用于套接字的Qt类,适用于所有平台。

相关问题