У меня есть прокси-сервер, написанный на C #, который работает как служба Windows. Он прослушивает 127.0.0.1:xxxxx, где xxxxx может быть диапазоном портов от 53500 и выше.
Прокси работает очень хорошо, но иногда некоторые порты перестают отвечать, и когда я пытаюсь связаться с ними по телнету, он говорит, что запрос истек или он не отвечает.
Мне не удалось воспроизвести эту проблему в моей области разработки, но я думаю, что это связано с чем-то, из-за чего BeginReceive не вызывается после EndReceive. Следующая цитата из ветки о симптомах, которые я испытываю.
Аналогичная проблема возникает при использовании асинхронной связи, и существует путь выполнения, который, как оказывается, не вызывает BeginReceive после завершения предыдущего EndReceive. Это делает сокет неосведомленным обо всех дальнейших данных, отправляемых удаленной стороной.
Есть ли способ смоделировать эту ситуацию, когда порт перестает отвечать на запросы. Я хочу написать некоторый код, чтобы проверить, отвечает ли порт, прежде чем он продолжит выполнение запроса. Если он не отвечает, я могу удалить прослушиватель на этом порту и добавить его снова. Это пластырь, который не дает прокси-серверу работать до тех пор, пока я не смогу определить причину проблемы.
Я также добавил некоторые дополнительные записи в журнал, чтобы определить, что заставляет порты перестать отвечать.