Member 13936585 Ответов: 1

По заявлению VB.NET Ethernet-соединение по тайм-ауту через несколько часов


Привет, ребята, написал Я Vb.net код для управления роботом, который общался с помощью ethernet. все работает нормально, но через некоторое время (около 6-7 часов) он теряет связь, вероятно, из-за переполнения буферной памяти или чего-то еще, и выдает следующую ошибку-невозможно прочитать данные из транспортного соединения: операция над сокетом не может быть выполнена из-за отсутствия достаточного буферного пространства в системе или из-за переполнения очереди.

Итак, как мне увеличить буферную память или как мне регулярно опустошать ее, чтобы соединение всегда оставалось активным? Я использую приведенный ниже код для потоковой передачи данных-

_tcpClient = новая система.Net.Sockets.объект TcpClient()
_объект TcpClient.Подключение("193.240.200.203", 10001)
_tcpStream = _tcpClient.Метод getstream()
_tcpStream.BeginRead(_readBuffer, 0, 256, New AsyncCallback(AddressOf OnDataAvailable), ничего)

Заранее спасибо, любая помощь очень ценится.

Что я уже пробовал:

Я думал увеличить размер буфера чтения с 256 до 1024 и посмотреть, работает ли он, но еще не сделал этого.

_tcpStream.BeginRead(_readBuffer, 0, 1024, New AsyncCallback(AddressOf OnDataAvailable), ничего)

1 Ответов

Рейтинг:
2

Gerry Schmitz

Вы добавляете обработку ошибок / отчеты перед тем, как "исправить" их.

Вы должны знать больше о ситуации, которая вызывает проблему. Затем, когда возникает проблема, сбросьте статистику, такую как "количество байтов" и т. д.

В "критически важной" ситуации вы пишете мониторы для записи чтения, записи, тайм-аутов.

Вы спрашиваете, стоит ли вам просто бросить в него код.