for (;;) /* Avoid using goto */
{ if (setsockopt(listener, SOL_SOCKET, SO_REUSEADDR,
(char*) &reuse, (socklen_t) sizeof(reuse)) == -1) break; if (bind(listener, &a.addr, sizeof(a.inaddr)) == SOCKET_ERROR) break;
memset(&a, 0, sizeof(a)); if (getsockname(listener, &a.addr, &addrlen) == SOCKET_ERROR) break; // win32 getsockname may only set the port number, p=0.0005. // ( http://msdn.microsoft.com/library/ms738543.aspx ):
a.inaddr.sin_addr.s_addr= htonl(INADDR_LOOPBACK);
a.inaddr.sin_family= AF_INET;
if (listen(listener, 1) == SOCKET_ERROR) break;
socks[1]= socket(AF_INET, SOCK_STREAM, 0); if (socks[1] == -1) break; if (connect(socks[1], &a.addr, sizeof(a.inaddr)) == SOCKET_ERROR) break;
socks[0]= accept(listener, NULL, NULL); if (socks[0] == -1) break;
closesocket(listener);
{ /* Make both sockets non blocking */
ulong arg= 1;
ioctlsocket(socks[0], FIONBIO,(void*) &arg);
ioctlsocket(socks[1], FIONBIO,(void*) &arg);
} return0;
} /* Error handling */
last_error= WSAGetLastError(); if (listener != -1)
closesocket(listener);
close_socketpair(socks);
WSASetLastError(last_error);
return last_error;
}
/* Freesocketpair
*/
void close_socketpair(SOCKET socks[2])
{ if (socks[0] != -1)
closesocket(socks[0]); if (socks[1] != -1)
closesocket(socks[1]);
socks[0]= socks[1]= -1;
}
#endif/*_WIN32 */
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.14 Sekunden
(vorverarbeitet am 2026-10-08)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.