我试着在mingw上创建UDP套接字,但是socket()
返回-1
,errno = 0
。奇怪。 我已经包含了winsock2.h。 最初,我编译错误undefined reference to [email protected]
,设置 -lws2_32
和-lwsock32
链接器设置Code :: Block,编译成功。socket()返回-1但是errno 0
sockfd = socket(AF_INET, SOCK_DGRAM, 0);
RDF_LOG(kDEBUG, "sockfd %d ", sockfd);
if (sockfd < 0){
RDF_LOG(kERROR, "ERROR: %s , errno %d\n", strerror(errno), errno);
}
结果 - > 的sockfd -1 错误:没有错误,错误号0
OK,我改变RDF_LOG,而不是fprintf中。
int tmp = 0;
sockfd = socket(AF_INET, SOCK_DGRAM, 0);
tmp = errno;
fprintf(stderr, "sockfd %d ", sockfd);
if (sockfd < 0){
fprintf(stderr, "socket: %s , errno %d\n", strerror(tmp), tmp);
}
结果返回,仍然, - >的sockfd -1插座:没有错误,错误号0 难道MinGW的不支持错误号?
注意,标准库函数都不允许设置'errno'为零,而最佳实践要求第三方的库函数也应该避免这样做。 –
@paxdiablo是的,我没有初始化winsock!现在它在WSAStartup之后起作用。 – twfx