Я создал тестовую серверную программу в Delphi с помощью TIdTCPServer, который имитирует несколько серверов на одном ПК, добавив несколько портов в привязки по вызову IdTCPServer1.Bindings.Add. Это хорошо работает.Как имитировать ошибку сокета
Но я также хочу смоделировать сетевую ошибку, отключенную для порта, который должен вернуть клиенту ошибку сокета. Я попробовал Bindings.Delete для этого порта, а также попробовал CloseSocket, но безуспешно. Любые идеи о том, как имитировать эту ошибку, отключив или удалив порт?
Я полагаю, вы можете освободить серверный компонент, но это довольно грязный способ сделать это. –
Вы можете вызвать таймаут чтения, не отправив ничего, и вы можете вызвать сброс соединения, установив SO_LINGER на нулевой тайм-аут и закрыв сокет, но вы не сможете имитировать отключение кабеля или маршрутизатора. – EJP
Установите правило брандмауэра, чтобы заблокировать диапазон портов или IP-адресов, если вы хотите имитировать потерю сети или потеря связи. – selbie