отправка ushort длинных байтовых данных через объект tcpclient - PullRequest
1 голос
/ 06 сентября 2010

Мое приложение в c # хочет соединиться с сторонним Tcp-сервером для отправки данных и получения ответных сообщений ... Синтаксис команд имеет тип данных UShort, ULONG, BYTE. Пример команды, которую необходимо отправить моему приложению:

USHORT 0xFFFF
USHORT 0x00D0
BYTE   0xDD

затем в приложении я отправляю данные как

  TcpClient tcpClient = new TcpClient();
       tcpClient.Connect("XX.XX.XX.XX",portnumber);

       Networkstream ns=tcpClient.GetStream();
       StreamWriter sw=new StreamWriter(ns);
       sw.Write(0xFFFF);
       sw.Write(0x00DD);
       sw.Write(0x00);

// или отправляю им байты

     sw.Write(0xFF);
       sw.Write(0xFF);
       sw.Write(0x00);
       sw.Write(0xD0);
       sw.Write(0x00);
       sw.Write(0x00);

и я читаю входящие сообщения через сервер как

  while (true)
               {

                    byte[] buff=new byte[tcpClient.ReceiveBufferSize];
                    ns.Read(buff, 0, tcpClient.ReceiveBufferSize);
                 string dv= BitConverter.ToString(buff));
                }
//returned data looks like FF-A2-00-23-00-02-00-00-00-00-00-00-D9-2E-20-2E-00-A0-04-00-AE-08
//yes i know this byte syntaxes but returning data is not that i look response for command that i sent..

но возвращаемые значения - это не то, что я ищу. Неправильно ли в моем коде отправка данных на сервер ??и любые рекомендации по чтению записи данных приветствуются ...

1 Ответ

0 голосов
/ 06 сентября 2010

Никто не может сказать вам, что не так с ответом, когда они не знают используемый протокол. Сервер отправляет это, потому что он чувствует, что это ... это может быть что-то не так с вашим запросом, или это может быть сообщение о том, что он недоступен для обслуживания. Вы можете проверить только его спецификацию о том, как интерпретировать полученный результат, или спросить людей, которые его поддерживают.

Также неплохо было бы пометить этот вопрос тем языком, который вы используете, чтобы люди могли понять вызовы функций и то, правильно ли вы их вызываете.

Я бы также рекомендовал использовать анализатор пакетов (или в Linux просто strace), чтобы показать, что пакеты читаются и пишутся ... вы, вероятно, увидите ошибки там. Затем используйте другую программу для взаимодействия с сервером, который работает, и сравните байты.

...