Я только что преобразовал программу, которая использует winsock, в Unicode, и я столкнулся с проблемой.
Вот мой код, ну и часть его
TCHAR http_request[MAX_REQUEST_LEN];
TCHAR data[65536];
int nDataLen = 0;
/* Create http_request */
send(mySocket, (char*)http_request, lstrlen(http_request), 0)
nDataLen = recv(mySocket, (char*)data, 65536, 0);
Я почти уверен, что приведение data
к char*
вызывает проблему, но я не совсем уверен.
Там нет sendW или recvW, поэтому мне интересно, как я должен это сделать.
EDIT:
Это больше не терпит крах благодаря Grim.
Но теперь у меня есть другая проблема, у меня есть этот код, но он возвращает ERROR_INVALID_PARAMETER
TCHAR http_request[MAX_REQUEST_LEN];
char ansi_data[65536];
TCHAR data[65536];
int nDataLen = 0;
/* Create http_request */
send(mySocket, (char*)http_request, lstrlen(http_request) * sizeof(TCHAR), 0);
nDataLen = recv(mySocket, ansi_data, 65536, 0);
// Convert ansi_data to data, this is what causes the error
if (MultiByteToWideChar(CP_ACP, 0, ansi_data, nDataLen, data, 65536) == 0)
ErrorExit(GetLastError());