C # отправлять и получать пакет TCP через веб-приложение - PullRequest
0 голосов
/ 11 февраля 2011

Привет. Мы пишем уникальный проект.Мне было интересно, может ли кто-нибудь указать мне нас в правильном направлении, так как я не знаком с программированием tcp.

Мы разговариваем с внешней системой.Я отправляю пакет tcp и получаю ответ tcp.Это должно работать со страницы в веб-приложении, постоянно опрашивая каждые x msecs

Предлагаемая длина сообщения составляет 8 байтов, информация о начале или конце сообщения не передается.Структура сообщения: |байт 0 |байт 1 |байт 2 |байт 3 |байт 4 |байт 5 |байт 6 |байт 7 |

Разделителями сообщений являются: |байт 0 |= 0x02 (stx) и |байт 7 |= 0x03 (etx)

Мое отправленное сообщение: |STX |'s' |'б' |'0' |'0' |'0' | '0' | etx |

Мое сообщение recv: |STX |'S' |'B' |'0' |'1' |'0' |'0' |etx |

Вопросы:

Стоит ли использовать классы tcpCLient / Listener или классы Sockets?

Каков наилучший способ получения веб-страницы для непрерывного опроса и отправки / полученияэти пакеты каждые х мс?

Ответы [ 2 ]

0 голосов
/ 11 февраля 2011

Возможно, вы захотите посмотреть WebSockets для связи на стороне клиента, хотя в настоящий момент поддержка очень ограничена.

Другой вариант - использовать файл .swf впосредник для вашего TCP общения.См. http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/Socket.html. Каждый раз, когда вы получаете интересующий пакет, вы можете использовать ExternalInterface для передачи данных из флэш-фильма и нетерпеливого ожидания JavaScript!

0 голосов
/ 11 февраля 2011

То, что вы предлагаете, в принципе невозможно, потому что Javascript не поддерживает прямой TCP / IP.Вам нужно будет запустить процесс TCP на сервере и использовать метод асинхронного обновления для отображения результатов на вашей веб-странице.

Для отображения результатов асинхронно на вашей странице вам придется использовать Ajax и Comet.Комета предлагает вам в основном три варианта:

  1. Сделайте так, чтобы ваш Javascript опрашивал сервер с помощью запроса Ajax, вызванного из обратного вызова таймера;у этого есть все недостатки опроса,
  2. Используйте "длинный опрос", который по существу означает асинхронный вызов к вашему веб-сайту, который блокирует, пока у него нет результата;это не очень хорошо масштабируется, так как он блокирует поток IIS для каждой клиентской веб-страницы,
  3. Использование сервера комет и связанной с ним библиотеки на стороне клиента - лучший путь, но обычно требует затрат.

    В Интернете много информации о комете и Ajax.

...