Как отправить специальные символы с помощью TCP-сокетов? [Закрыто]

У меня есть клиент-серверная программная модель, написанная на c, c ++, java (несмотря ни на что), и, например, мы хотим отправить "Hola\nMundo" через сокеты между клиентом и сервером.

Чтобы отправить специальные символы, в этом случае \n, без получения текста, вам необходимо обработать поиск этих специальных символов, если вы отправите специальный символ \n в кодировке ASCII и вместе с ним остальная часть текста таким образом, что я действительно отправляю только цифры (по 1 на символ, специальные или нет)?

Или я должен найти какую-то функцию (потому что известно, что он существует и принято его использовать) для отправки и получения текста таким образом, чтобы, если я отправлю его в Капон "Hola\nMundo" после получения сообщения и распечатал его без дальнейшего получения ?:

Hola
Mundo 

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

-1
задан 19.01.2017, 09:04
0 ответов

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

TCP, если сам он не навязывает никакого специального, такого кодирования, если я посылаю например тексты сервера, кодировавшего в UTF-8, клиент должен знать это и преобразовываться byte который он получает зависимо от программные средства доступно от использованного языка программирования.

Например, если я получил договоренность byte в Java, я могу превращать это в один String с назначенным по умолчанию кодированием такого клиента:

InputStream is = socket.getInputStream();
byte[] bytes = new byte[is.available()];
is.read(bytes); 
String recibido =  new String(bytes);

Если я например получаю текст в utf-8 и по умолчанию использую utf-16, я могу remplazar способ строить String давая один Charset для превращения.

String recibido = new String(bytes, Charset.forName("UTF-8"));

Я жду, что это осветляет твое сомнение.

кстати: LINEFEED или "\n" верно перепредставительный как байт, стоимости 10.

System.out.println("\n".codePointAt(0));

10
2
ответ дан 03.12.2019, 17:37

Теги

Похожие вопросы