Вопрос

Я хотел бы посмотреть, как программа реагирует на разрыв соединения. Помимо отключения сетевой карты, есть ли способ разорвать tcp-соединение в Windows без прерывания процесса или потока, которому принадлежат соединения?

Это было полезно?

Решение

Самое близкое, что я обнаружил при создании ошибки ОС, - это использовать что-то вроде TcpView , чтобы посмотреть, какие сокеты открыты, и разорвать их. Я не совсем уверен, что именно он делает, чтобы разорвать соединение, но он закрывает его так, чтобы приложение могло его увидеть.

Другие советы

TCPView от SysInternals позволяет закрыть соединение (и просмотреть все открытые соединения).

Одна вещь, которую я видел, была сделана так, чтобы сетевой код был написан так, чтобы соединение могло быть разорвано удаленно. Продукт, над которым я когда-то работал, был написан именно так. У нас даже был набор тестов на пытки, которые случайным образом разрывали связи. Продукт должен был быть транзакционным, и было поучительно посмотреть, как он себя вел.

Конечно, мы нашли клиента, чья сеть постоянно разрывала соединения, и были очень рады, что мы так тщательно его протестировали.

Почему бы просто не отключить сетевой кабель?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top