xml данные по сети tcp. пожалуйста помоги

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

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

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

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

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


person Ramah    schedule 08.08.2010    source источник
comment
Вам абсолютно необходимо использовать сокеты tcp низкого уровня? Кажется, что использовать службу WCF было бы проще, если бы она соответствовала вашим требованиям.   -  person Brian Driscoll    schedule 04.08.2010
comment
Если вы используете TCP, данные для каждого соединения должны поступать по порядку. Убедитесь, что вы используете отдельное соединение для каждого устройства и сохраняете данные для каждого устройства отдельно.   -  person John Saunders    schedule 04.08.2010
comment
ничего не работает из вышеперечисленного .. я пробовал много методов, чтобы заставить его работать, но ничего не работало. данные вообще не по порядку   -  person Ramah    schedule 08.08.2010
comment
Почему вы используете сниффер для получения XML-данных? Почему бы просто не послушать TCP-порт самостоятельно?   -  person Thomas    schedule 08.08.2010


Ответы (1)


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

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

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

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

person Chris Taylor    schedule 08.08.2010