2016-10-27 6 views
-1

Доброе утро,Отправка двоичных данных с помощью (C#)

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

Я в основном создаю фиктивный сервер для отправки сетевых данных и хотел бы, чтобы мой клиент разбирал его.

Моя идея - создать массив байтов: byte [] data = {1,0,0,0,1,0,0,1) для представления 8 байтов. Например, клиент будет читать первые 2 байта и печатать a 2, а затем следующие 6 байтов и распечатать 9.

Это простой пример. Байт-массив, который я бы хотел отправить, был бы 864 байта. Я проанализировал первые 96,48,48 и т. Д.

Будет ли это хорошим способом сделать это? Если нет, как мне отправить 1 и 0? Я нашел много примеров отправки строк, но я хотел бы отправить двоичные данные.

Спасибо.

+0

https://www.youtube.com/watch?v=Kj9VpauMV5A –

ответ

1

Вы, кажется, путаете биты и байты. Байт состоит из 8 бит, который может представлять целочисленные значения от 0 до 255. Итак, вместо отправки {1,0,0,0,1,0,0,1}, разбивая массив байтов и анализируя байты в биты, чтобы получить 2 и 9, можно просто создать массив как:

byte[] data={2,9}; 

для передачи других типов примитивно данных (Int, длинная, с плавающей точкой, двойные ...), вы можете преобразовать их в байты массив.

int x=96; 
byte[] data=BitConverter.GetBytes(x); 

байт массив, то можно записать в поток, как

stream.Write(data,0,data.Length); 

На стороне клиента, разобрать байтовые массивы как:

int x=BitConverter.ToInt32(data,startIndex); 

MSDN имеет большие ссылки на TCP-клиентов и слушатели.

https://msdn.microsoft.com/en-us/library/system.net.sockets.tcplistener(v=vs.110).aspx

https://msdn.microsoft.com/en-us/library/system.net.sockets.tcpclient(v=vs.110).aspx

+0

Большое спасибо. Я немного смутился. У меня есть структуры, которые я бы хотел отправить себе и разобрать. Все они различаются по размерам бит. Один из них - 1280, а другой - 864 бит. Первые 96 бит структур содержат информацию о типе структуры (имя, тип, местоположение и т. Д.). Как бы я отправил себе серию из 1 и 0? – Skyhigh

+0

Если это структура, я бы порекомендовал отправлять ее как строку, разделенную запятой, что упростило бы анализ на стороне клиента. Если запятые являются частью данных, которые вы отправляете, вы можете использовать любой другой необычный символ в качестве разделителя (я в основном использую |) –