Я не очень разбираюсь в C ++, поэтому мне нужно попросить вас о помощи.
Мне нужен сервер, реализованный на C ++, который слушает порт TCP. По этому порту он должен просто получать XML-документы. Я нашел несколько примеров многопоточных сокетов TCP, но я не знаю, как позаботиться о ReadToEnd или преобразовании в строку или документ XML.
Я думал использовать CodeSynthesis это работает с потоками. Но как совместить сокет TCP и поток?
Извините, если это звучит как нубский вопрос. Но я ценю любой хороший пример или совет.
Наконец то использовал
Boost lib предоставляет хороший уровень абстракции сокетов и потоки ввода / вывода, которые впоследствии можно использовать для сериализации и десериализации XML-документов с помощью CodeSynthesis.
Сам протокол Tcp не дает вам возможности отличить одно сообщение от другого. Это гарантирует только порядок и то, что никакие данные не будут доставлены.
Так что это зависит от вас, чтобы реализовать функцию ReadToEnd. Например, вы можете отправить какой-то специальный символ (сначала убедитесь, что он не представлен в ваших xmls). Или вы можете использовать уже существующий протокол HTTP для отправки нескольких документов через одно соединение. Ты можешь попробовать http://libevent.org/ Реализация http-сервера и использование его для ваших нужд.
Еще более простым способом будет использование существующего http веб-сервера и получение ваших документов с ним, в этом случае вам не нужно создавать свой собственный.