Ich entwickle einen Socket-Server und einen Client mit .NET Framework 4.6.2 und C#.Entfernen Sie ausstehende Daten, die nach Socket-Timeout gelesen werden sollen
Client ist SynchronousSocketClient
.
Server-Klasse ist mehr oder weniger so one.
Am Client sende ich Daten zur Aktualisierung auf der Datenbank.
Auf dem Server mache ich eine Operation in einer Datenbank (aktualisieren Sie eine Tabelle mit einer gespeicherten Prozedur).
Der Prozess ist Client sendet Daten an Server, Server verarbeitet es und sendet eine Nachricht mit dem Ergebnis zurück.
Manchmal bekommt diese Datenbankoperation mehr Zeit dafür. Wenn diese Zeit größer als Socket.ReceiveTimeout
ist, bekomme ich eine SocketException
wegen einer TimeOut und ich verarbeite die Daten nicht, die vom Server kommen.
Gibt es eine Möglichkeit, diese vom Server gesendeten Daten zu verarbeiten?
Nach dem TimeOut warte ich nicht mehr auf die vom Server gesendeten Daten und ich starte den Vorgang erneut, sende neue Daten an den Server, aber wenn ich versuche, das Serverergebnis aus diesen neuen Daten zu lesen, ich Lesen Sie die Serverantwort für die vorherige.
Der Prozess auf dem Client ist kritisch und ich kann nicht warten, um eine Antwort vom Server zu erhalten. Ich muss weiter Daten verarbeiten.