Страница: 1 |
Страница: 1 |
Вопрос: Работа с tcp в .Net
Добавлено: 02.12.12 15:40
Автор вопроса: DrKillJoy
Доброго времени суток! Очень нужен совет знающих людей.
Есть у меня рабочий проект на VB6, в нем утроен обмен по TCP и протоколу ModBus, с внешним устройством. Теперь встала необходимость перенести это проект на .Net
Там на сколько я знаю, вместо WinSock используется System.Net.Sockets. Но я совсем не понимаю, как с ним работать...
Нашел в интернете пример (http://control.com/thread/1273242611), но он у меня зависает на строке (serverStream.Read(inStream, 0, CInt(clientSocket.ReceiveBufferSize)))
Очень бы хотелось услышать совет! Ну, а если примером поделитесь, то буду очень счастлив!
Ответы
Всего ответов: 6
Номер ответа: 1
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #1
Добавлено: 17.12.12 07:40
Не говоря о том, что пример мягко говоря очень корявый...
Read выполняет синхронное чтение данных из потока (в данном случае из сетевого потока NetworkSteam). Если он зависает, значит в потоке никаких данных нет. Метод Read вернет результат либо когда в поток попадут какие-то данные, которые можно считать, либо при наступлении исключения (например, таймаута).
Номер ответа: 2
Автор ответа:
DrKillJoy
Вопросов: 10
Ответов: 18
Профиль | | #2
Добавлено: 25.12.12 04:22
Спасибо за ответ!
Лучшее, что я смог найти на просторах интернета. Может есть и лучше, но я не знаю.
Спасибо за ответ, теперь понятно, из за чего происходит зависание...
Может посоветуете что-нибудь почитать, по ".Net.Sockets"? Буду рад любой инфе!
Номер ответа: 3
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #3
Добавлено: 25.12.12 21:37
Ищи примеры по TcpClient (их в инете как грязи) .. это обертка над сокетами... смотри,разбирайся, пробуй.. Что будет непонятно - спрашивай
Номер ответа: 4
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #4
Добавлено: 26.12.12 04:57
ты на какой версии VB.NET сидишь? Если есть возможность использовать самую последнюю (2012), то там сделали просто очень вкусные фичи в том числе по работе с вводом выводом (и сетью в том числе)
Номер ответа: 5
Автор ответа:
andrey
ICQ: 305986093
Вопросов: 3
Ответов: 41
Профиль | | #5
Добавлено: 26.02.13 12:31
Так к примеру.
Artyom какие вкусности коснулись работы с COM портами?
Номер ответа: 6
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #6
Добавлено: 02.03.13 01:58
andrey, ужасный код.
Этот цикл будет очень сильно нагружать процессор, впустую, учитывая что при работе с сетью большую часть времени выполняется ожидание данных.
Метод Stream.Read синхронный, и в том случае, если в потоке нет данных, выполнение кода и так приостановится до того как данные появятся или сработает таймаут
Я не вижу чего-то нового для работы с COM портами