Я надеюсь, что это хороший день, чтобы получить хороший ответ. У меня есть код, который отправляет данные на сервер TCP. Я в порядке при отправке данных, но я не знаю, как включить заголовок. Вот как должны выглядеть заголовки:
Для связи между устройством и интерфейсом XML используется сообщение TCP, начинающееся с заголовка, чтобы указать длину сегмента данных сообщения. Этот заголовок должен предшествовать всем сообщениям, отправляемым на интерфейс XML, и будет отправляться в начале всех ответов TCP от интерфейса XML.
Если длина сообщения меньше 2 ^ 16-1 или 65535, то будет использоваться двухбайтовый заголовок.
Первый байт заголовка содержит частное от длины сообщения (исключая этот заголовок) и 256. Второй байт содержит остаток от этого деления. Оба эти значения представлены в двоичном виде в виде целочисленных значений без знака в диапазоне от 0 до 255 (байты от 0x00 до 0xFF).
Если длина сообщения больше или равна 216-1 или 65535 байтов, то будет использоваться шестибайтовый заголовок.
В этом случае следует отправлять байты 0xFF 0xFF, за которыми следует четырехбайтовый индикатор длины, то есть всего шесть байтов.
Теперь у меня есть следующее, и, как вы можете видеть, это не решает проблему с заголовком. Который в основном мой вопрос.
private static void main2(String hostname, int port, String message)
{
String response = String.Empty;
TcpClient client = new TcpClient(hostname, port);
Console.WriteLine(message);
NetworkStream stream = client.GetStream();
StreamWriter writer = new StreamWriter(stream,Encoding.UTF8);
writer.AutoFlush = false;
writer.WriteLine(message);
writer.Flush();
writer.Close();
StreamReader reader = new StreamReader(stream, Encoding.UTF8);
response = reader.ReadLine();
stream.Close();
}
Информация попадает на мой TCP-сервер. (подтверждено с помощью tcp viewer). Но поскольку я не знаю, как включить заголовок, сервер не сможет ответить мне, так как он считает мой запрос не завершенным. Заранее спасибо, ребята, за вашу помощь.