한국어English日本語简体中文繁體中文DeutschไทยTiếng ViệtРусскийPortuguês (Brasil)EspañolBahasa Indonesia

Game-Lag-Whitepaper › L8 Sockets und Protokolle

WSAECONNRESET-Fehler bei UDP-Sockets unter Windows WSAECONNRESET on a Windows UDP socket

Ursachen-ID sk-udp-connreset · Hauptzuständig Server-Entwicklung (Entwicklungsteam)

In der interaktiven Fassung mit Grafiken und Experimenten öffnen →

Sendet ein Windows-Server UDP an einen Client, der schon weg ist, kommt eine ICMP-Meldung „Port nicht erreichbar“ zurück. Durch diese Meldung endet der nächste Empfangsaufruf mit einem Fehler. Behandelt der Servercode diesen Fehler als Defekt des Sockets selbst, sind alle betroffen, die diesen Socket nutzen.

Warum UDP geht weiter an die Adresse eines gerade abgemeldeten Clients, eine ICMP-Meldung „Port nicht erreichbar“ kommt zurück → Folge Windows beendet den nächsten Empfangsaufruf mit dem Fehler WSAECONNRESET (10054), der Servercode stoppt den Empfang oder schließt den Socket → Auf dem Bildschirm Alle, die diesen Socket nutzen, auf einmal: Freeze oder Verbindungsabbruch

Symptome
Verbindungsabbruch, Freeze
Faktoren
Paketverlust, Stillstand
Wer ist betroffen
Ganzer Server
Wann
Gelegentlich, zufällig, Direkt nach Login oder Wartung
Zuständigkeit
Hauptzuständig Server-Entwicklung (Entwicklungsteam)
Aufgaben Entwicklungsteam
SIO_UDP_CONNRESET per WSAIoctl abschalten, damit diese Meldung nicht ankommt, bei Empfangsfehlern nur loggen und weiter empfangen.
Im Graphen
Verbindungen brechen gleichzeitig ab · Verbindungen, Log der Empfangsfehler
Wo nachsehen
Im Spielserver-Log nach UDP-Empfangsfehlercodes (WSAECONNRESET, 10054) und nach Einträgen suchen, dass die Empfangsschleife stoppte oder der Socket geschlossen wurde, per Paketmitschnitt auf dem Server prüfen, ob kurz davor ICMP Port Unreachable eintraf
Spricht dafür
Kurz vor den gleichzeitigen Verbindungsabbrüchen ist ein WSAECONNRESET-Empfangsfehler protokolliert, und davor kam ICMP Port Unreachable von der Adresse eines gerade abgemeldeten Clients
Spricht dagegen
Linux-Server oder SIO_UDP_CONNRESET im Code abgeschaltet: trifft nicht zu
Prüfmittel
Logs oder Metriken aus Spielserver bzw. Client nötig

Quellen

  1. Winsock IOCTLs Microsoft
    SIO_UDP_CONNRESET schaltet für UDP die Meldung „Port nicht erreichbar“ (PORT_UNREACHABLE) ein und aus
  2. recvfrom function (winsock.h) Microsoft
    WSAECONNRESET an einem UDP-Socket bedeutet, dass ein früherer Sendevorgang ICMP Port Unreachable erhalten hat
  3. Windows Sockets Error Codes Microsoft
    Fehlernummer von WSAECONNRESET: 10054

Verwandte Ursachen

Gleiche Schicht: L8 Sockets und Protokolle

Ursachen aus anderen Schichten mit demselben Symptom (Verbindungsabbruch)

Karte in der interaktiven Fassung mit Grafiken und Experimenten ansehen