23.11.2017 Socket, передача строки
 
Приветствую! Не знаю, в ту ли ветку пишу, но приложение-сервер у меня на C#, а приложение-клиент на C++. Проблема в следующем: необходимо передавать на сервер строку типа const wchar_t*.
Код на клиенте:
bool SocketClient::SendData(const wchar_t *p_Data)
{
    int iResult;
 
    if (m_ConnectSocket == INVALID_SOCKET)
        return false;
 
    iResult = send(m_ConnectSocket, (char*)p_Data, (int)(wcslen(p_Data) * sizeof(wchar_t) + 2), 0);
        ...
}

Код на сервере:
public void ClientDoProccess(object clientObject)
        {
            using (TcpClient tcpClient = (TcpClient)clientObject)
            {
                using (NetworkStream stream = tcpClient.GetStream())
                {
                    while (listen)
                    {
                        while (stream.DataAvailable)
                        {
                            byte[] readBuf = new byte[tcpClient.Available];
                            // получаю данные
                            int count = stream.Read(readBuf, 0, readBuf.Length);
                            // а вот как их преобразовать к string?
                            ...
                        }
                        Thread.Sleep(100);
                    }
                }
            }
        }

На сервере получаю набор байтов, а как их преобразовать назад к строке? Как я их не пытался декодировать через Encoding, ничего кроме набора бессмысленных символов не получаю. Как делать правильно?