Ich habe ein Test-Server-Programm in Delphi erstellt, indem ich TIdTCPServer verwendet, das mehrere Server auf demselben PC simuliert, indem der Bindung mehrere Ports durch den Aufruf IdTCPServer1.Bindings.Add hinzugefügt werden. Das funktioniert gut.So simulieren Sie einen Socket-Fehler
Aber ich möchte auch einen Netzwerk-Unplugged-Fehler für einen Port zu simulieren, die einen Socket-Fehler an den Client zurückgeben sollte. Ich habe Bindings.Delete für diesen Port versucht und auch CloseSocket versucht, aber ohne Erfolg. Haben Sie Ideen, wie Sie diesen Fehler durch Deaktivieren oder Löschen eines Ports simulieren können?
Ich nehme an, Sie könnten die Server-Komponente freigeben, aber das ist eine ziemlich schmutzige Art, es zu tun. –
Sie können einen Lese-Timeout verursachen, indem Sie nichts senden, und Sie können einen Verbindungs-Reset durchführen, indem Sie SO_LINGER mit Null-Timeout einschalten und den Socket schließen, aber Sie können keinen Kabelzug- oder Routerausfall simulieren. – EJP
Legen Sie eine Firewall-Regel fest, um einen Port- oder IP-Adressbereich zu blockieren, wenn Sie Netzwerkverlust oder Verbindungsverlust simulieren möchten. – selbie