Отправка буфера TCHAR с помощью send (sock, wszBuffer, ...)? - PullRequest
2 голосов
/ 24 августа 2010

У меня есть широкосимвольное сообщение XML, которое мне нужно отправить через сокет Win32 в C ++.

TCHAR wszBuffer[1024];

Должен ли я sprintf(szSendBuffer, "%S", wszBuffer) буфер широких символов в массив char перед отправкой?

Как правильно отправить это?

Ответы [ 4 ]

2 голосов
/ 24 августа 2010

Передайте wszBuffer непосредственно в функцию сокета, приведя его к типу char *, с длиной = sizeof (wszBuffer) или 1024 * sizeof (TCHAR). В этом случае буфер будет отправлен как есть.

Если вы хотите отправить этот текст в виде строки ANSI, преобразуйте его любой функцией преобразования строк. sprintf в порядке, другой способ - W2A. Но некоторая информация может быть потеряна.

1 голос
/ 26 августа 2010

Используйте WideCharToMultiByte для преобразования его в UTF-8 (или любую другую кодировку на основе char, если вы объявите ее в файле XML).

1 голос
/ 25 августа 2010

Поскольку вы имеете дело с XML, вам нужно кодировать его в UTF-8 или другой дружественной к XML кодировке символов (и указать эту кодировку в прологе XML) перед отправкой через сокет.

0 голосов
/ 24 августа 2010

Вы можете просто привести его к персонажу *.На другом конце вы можете просто привести полученный буфер к wchar_t *.

...