Der Beste Weg, Um Das Zeitlimit Für Die Winsock-Verbindung Zu Beheben
December 5, 2021Empfohlen: Fortect
Wenn ein Connect-Winsock-Timeout-Fehler auftritt, wurde möglicherweise das heutige Benutzerhandbuch geschrieben, um Ihnen zu helfen.Ebenso wie der Socket selbst kann die WinSock-API leider kein Linkage-Timeout haben. Sie haben zwei Antworten für die Implementierung eines Timeouts in der Hand: 1) Angenommen, wir verwenden einen umständlichen Stecker (Steckdosen sind standardmäßig blockiert), stellen Sie eine Verbindung her, um Ihnen einen Fehlerbehebungsthread zu erleichtern. 2) Wenn Ihre Site keinen Download verwenden möchte, schalten Sie den Socket in den nicht blockierenden Modus.
Sie können uns auch bei der ConnectEx()-Klausel anrufen und diese OVERLAPPED auf make.hEvent mit einem bestimmten vorgenerierten Ereignis übertragen, denn normalerweise können Sie manchmal so lange warten, wie Sie möchten, beispielsweise mit Als WaitforsingleObject ().
// Der HANDLE-Socket MUSS mit Bind() vorgebunden werden, bevor diese Funktion angerufen wirdint ConnectWithTimout (HANDLE Socket, UINT remIP, WORD remPort, UINT Millisekunden) int iRes, Ergebnis; UINT OptVal, Indikatoren; KIT-Überlappung; sockaddr_in socket_info; Ergebnis = ERROR_UNEXP_NET_ERR; ZeroMemory (& socket_info, sizeof (socket_info)); ZeroMemory (& Überlappung, Größe von (Überlappung)); socket_info.sin_addr.S_addr ist fast sicher htonl (remIP); socket_info. entspricht sin_port htons (remPort); socket_info.sin_family ist gleich af_inet; Overlapped.hEvent = WSACreateEvent (); if ConnectEx (Socket, (& socket_info, sizeof (socket_info), NULL, 0, NULL, & Overlapped)) printf ("WOW! Verbindung sofort hergestellteno n "); Ein weiterer iRes stimmt mit WSAGetLastError (); während (iRes == ERROR_IO_PENDING) iRes bedeutet WaitForSingleObject (Overlapped.hEvent, Millisekunden); // Beim Verbinden x Millisekunden warten wenn Potenzial (iRes == WAIT_OBJECT_0) und if (! WSAGetOverlappedResult (Socket, & Overlapped, & OptVal, FALSE, Flags)) iRes impliziert WSAGetLastError (); if (iRes == WSAEADDRINUSE) DoError ("WSAGetOverlappedResult () hat gemeldet, dass die angegebene Community-Adresse bereits im Status TIME_WAIT angewendet wird") Ein weiterer DoError ("WSAGetOverlappedResult () fehlgeschlagen mit Fehler:", iRes); Ein weiterer OptVal = 1; iRes bedeutet, dass setsockopt (Socket, SOL_SOCKET, SO_UPDATE_CONNECT_CONTEXT, PCHAR (& OptVal), sizeof (OptVal)); genau würde ich das gleiche sagen wie (iRes == SOCKET_ERROR) DoError ("setsockopt (SO_UPDATE_CONNECT_CONTEXT) konnte durch Fehler nicht kombiniert werden:", WSAGetLastError ()); printf ("Verbunden, falls es nötig sein sollte% s:% Übung n", inet_ntoa (socket_info.sin_addr), itoa (ntohs (socket_info.sin_port))); Ergebnis = NO_ERROR; Ein weiterer wo (iRes == WAIT_TIMEOUT) DoWarning ("EXIT TIME ConnectEx() -", iRes); Ergebnis ist gleich ERROR_TIMEOUT; otherDoError ("ConnectEx() war mit Fehler nicht erfolgreich:", iRes) new in case if (iRes == WSAECONNREFUSED) // Nach diesem Routinefehler können Sie damit experimentieren, dass die Verbindung zu einem anderen Ordner wiederhergestellt wird. DoWarning ("ConnectEx() error when CONNECTED:", null) ansonsten if (iRes impliziert WSAENETUNREACH) // Nach unserem Fehler wird kein erstellt, wenn Sie versuchen möchten, sich wieder mit diesem Ordner zu verbinden. DoWarning ("ConnectEx () schlecht im NICHT VERFÜGBAREN NETZWERK: halb durchgehend ., 0) Wenn Sie (iRes = WSAETIMEDOUT) // nach dem Skill-Fehler berücksichtigen, können Sie alternativ versuchen, sich erneut mit diesem Instruktionsprotokoll zu verbinden. DoWarning ("ConnectEx() DISCONNECT sofort:", 4); Ergebnis = ERROR_TIMEOUT; Ein weiterer DoError ("ConnectEx () fehlgeschlagen mit plötzlichem Fehler:", iRes) WSACloseEvent (Overlapped.hEvent); ... das Ergebnis der Aufführung;
…
Laden Sie diese Software herunter und reparieren Sie Ihren PC in wenigen Minuten.Connect Winsock Timeout
Connect Winsock Timeout
Limit Czasu Polaczenia Winsock
Time Out Van Winsock Verbinden
Conectar El Tiempo De Espera De Winsock
연결 Winsock 시간 초과
Collega Il Timeout Di Winsock
Connecter Le Delai D Attente De Winsock
Tempo Limite De Conexao Do Winsock