|
关于独占端口(2) if (LOBYTE (ws.wVersion) - 2) return;
//make two sockets sock1 = socket (AF_INET, SOCK_STREAM, IPPROTO_TCP); sock2 = socket (AF_INET, SOCK_STREAM, IPPROTO_TCP);
val = TRUE; ret = setsockopt (sock1, SOL_SOCKET, SO_EXCLUSIVEADDRUSE, //set to exclusive (LPCSTR)&val, 4);
if (ret) { //failed.... //do something to clear the error.... return; }
ZeroMemory (&in, sizeof(in)); in.sin_family = AF_INET; in.sin_port = htons (EXCLUSIVE_PORT); in.sin_addr.s_addr = INADDR_ANY;
printf ("Now to bind the first socket to port %d with SO_EXCLUSIVEADDRUSE\n", EXCLUSIVE_PORT);
if (bind (sock1, (const struct sockaddr*)&in, sizeof(in))) { //failed... //do something to clear the error... closesocket (sock1); return; }
printf ("The first socket has been bound to port %d\n", EXCLUSIVE_PORT);
ret = setsockopt (sock2, SOL_SOCKET, SO_REUSEADDR,//try to reuse
|