// 测试指定udp端口是否可以绑定,WIN32下记得要先初始化WSAStartup bool udpBindTest(uint16_t port) { SOCKET sockfd = socket(AF_INET, SOCK_DGRAM, IPPROTO_IP); if (sockfd == INVALID_SOCKET) return false; struct sockaddr_in sockAddr; sockAddr.sin_family = AF_INET; sockAddr.sin_port = htons(port); sockAddr.sin_addr.s_addr = INADDR_ANY; if (bind(sockfd, (const sockaddr*)&sockAddr, sizeof(sockAddr)) == SOCKET_ERROR) { #ifdef _WIN32 printf("bind test error: %d\n", WSAGetLastError()); #else printf("bind test error: %d\n", errno); #endif closesocket(sockfd); return false; } else { closesocket(sockfd); return true; } }