生成随机端口函数
这个函数用来生成一个随机端口,可以生成一个没有被占用的端口。
//生成随机端口 DWORD GenerateRandomPort() { int nStartPort = 1000; int nEndPort = 10000; FD_SET fd_Write; SOCKET s; struct sockaddr_in server; struct timeval tp = { 0 }; int ret = 0; unsigned long mode = 1; tp.tv_sec = 0; tp.tv_usec = 50; FD_ZERO(&fd_Write); server.sin_family = AF_INET; server.sin_addr.s_addr = inet_addr("127.0.0.1"); for(nStartPort; nStartPort != nEndPort; ++nStartPort) { s=socket(AF_INET,SOCK_STREAM, IPPROTO_TCP); FD_SET(s, &fd_Write); ioctlsocket(s, FIONBIO, &mode); server.sin_port=htons(nStartPort); connect(s,(struct sockaddr *)&server,sizeof(server)); ret=select(0, NULL, &fd_Write, NULL, &tp); if(0 == ret || -1 == ret) { closesocket(s); WSACleanup(); return nStartPort; } closesocket(s); } WSACleanup(); return nStartPort; }