我試着在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