使用send(sock,wszBuffer,...)发送TCHAR缓冲区?

时间:2010-08-24 10:50:16

标签: c++ sockets send widestring tchar

我有一个宽字符XML消息,我需要通过C ++中的Win32套接字发送。

TCHAR wszBuffer[1024];

在发送之前我应该​​sprintf(szSendBuffer, "%S", wszBuffer)宽字符缓冲区到char数组吗?

发送此信息的正确方法是什么?

4 个答案:

答案 0 :(得分:2)

将wszBuffer直接传递给套接字函数,将其转换为char *,其中length = sizeof(wszBuffer)或1024 * sizeof(TCHAR)。在这种情况下,缓冲区将按原样发送。

如果要将此文本作为ANSI字符串发送,请通过任何字符串转换函数进行转换。 sprintf没问题,另一种方式是W2A。但有些信息可能会丢失。

答案 1 :(得分:1)

由于您正在处理XML,因此需要先将其编码为UTF-8或其他XML友好的字符编码(并在XML的prolog中指定该编码),然后再通过套接字发送。

答案 2 :(得分:1)

使用WideCharToMultiByte将其转换为UTF-8(或任何其他基于char的编码,只要您在XML文件中声明它。)

答案 3 :(得分:0)

您可以简单地将其转换为char *。另一方面,您可以简单地将收到的缓冲区转换为wchar_t *。