Вы должны не быть в состоянии достичь этого, открыв несколько соединений и затем завершив тестовую программу. Ядро должно позаботиться о закрытии всех соединений TCP (аккуратно, по крайней мере на уровне TCP и ниже), когда программа завершается.
На самом деле, если есть что-то, что вы можете сделать из непривилегированного пользовательского пространства, чтобы вызвать зависание / разрыв соединения TCP, это ошибка в вашем ядре, и она должна быть исправлена: -)
Ваш лучший вариант, вероятно, заключается в использовании сырых сокетов для внедрения любых пакетов, которые вы хотите. Вам придется создавать свои собственные заголовки TCP и IP на этих пакетах, но для целей модульного тестирования вы можете построить заголовки из в основном фиксированных значений с несколькими добавленными вариантами значений. Рекомендуется начинать с захвата пакетов нормального, работающего сеанс, добавьте RST-пакет в нужном месте и более или менее воспроизведите эту последовательность в своей тестовой программе.
Я думаю, что делать это для проверки вашего приложения - это излишне. С этим подходом вы в основном тестируете стек TCP хостов. Чтобы протестировать ваше приложение, вероятно, достаточно подправить сокет, чтобы он возвращал ошибку в нужное время.