我试图端口一个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方法可以取代它?
2条答案
按热度按时间ve7v8dk21#
fcntl()
在Windows上不存在。对于套接字,等效函数是ioctlsocket()
。但是,Linux中套接字上的文件控制与Windows中的有很大不同,因此您使用的所有fcntl()
命令可能根本无法移植到Windows,或者它们可能需要不同的API。bt1cpqcv2#
不知道为什么要使用本机套接字。但是如果没有真实的的原因,可以看看
QTcpSocket
。它是用于套接字的Qt类,适用于所有平台。