XML данные по сети TCP. пожалуйста помоги - PullRequest
0 голосов
/ 08 августа 2010

У меня есть устройства.Каждый из них отправляет данные (IP-адрес сервера) через определенный порт в произвольное время.Потому что это сигнальное устройство, и возможно, что более одного устройства сработало одновременно.Данные в формате XML.

Теперь у меня уже есть небольшое приложение для Windows, которое прослушивает данные. Но у меня есть несколько проблем

  1. Проблема в том, что приложение перехватывает пакеты,Я имею в виду, что я могу получить данные в пакетах TCP ... это значит, что я получу XML, разделенный на пакеты, а не по порядку (по порядку по времени) ... из-за которого так трудно читать данные XML илипросто устройте это и читайте из него.Мне нужно прочитать эти данные с устройства и сохранить его в формате XML.даже если я слушаю одно устройство, пакеты не приходят в порядке

Есть идеи, как это сделать.Я видел некоторые другие Вопросы здесь и пробовал все эти ответы, но ничего не говорил о чтении файла XML.Я использую тот же код, что и в этой статье

http://www.codeproject.com/KB/IP/CSNetworkSniffer.aspx

1 Ответ

1 голос
/ 08 августа 2010

Вы прослушиваете пакеты RAW, которые проходят через сетевой драйвер.На этом низком уровне вы можете обрабатывать и восстанавливать сообщения, анализируя пакеты и используя такие вещи, как TCP seq, сообщения ack / nak и т. Д.

Вот статья в Википедии о протоколе TCPэто может помочь вам начать, прежде чем углубляться в более глубокую сторону вещей.http://en.wikipedia.org/wiki/Transmission_Control_Protocol

И, конечно, самый важный источник RFC.http://tools.ietf.org/html/rfc793

Я предполагаю, что вы перехватываете данные, потому что у вас есть какое-то другое приложение, которое фактически действует как сервер и прослушивает данные.Если сейчас вам действительно нужно просто написать приложение, которое прослушивает порт TCP и считывает данные оттуда.Таким образом, протокол TCP гарантирует, что вы получите все данные в правильном порядке и т. Д. Чтобы начать работу с этим, вы можете использовать класс TcpListener или использовать более низкий уровень Socket классы

...