Вы оцениваете адрес WSAGetLastError вместо его вызова.Вам нужно добавить круглые скобки для того, чтобы фактически вызвать эту функцию:
void IRC::SendBuf(char* sendbuf)
{
int senderror = send(m_socket, sendbuf, strlen(sendbuf), 0);
if (senderror != SOCKET_ERROR) {
printf("Client: The test string sent: \"%s\"\n", sendbuf);
} else {
cout << "Error is: " << WSAGetLastError() << endl;
}
}
EDIT: Функция send () возвращает количество записанных байтов, а некод ошибки.Вам необходимо проверить возвращаемое значение по SOCKET_ERROR
, как в обновленном коде выше.В вашем случае send()
говорит, что он успешно отправил 4 байта.
Как вы заметили ниже, он отправляет только 4 байта, потому что это размер переменной sendbuf
(это указатель, а не буфер),Если строка в sendbuf
оканчивается нулем, вы можете использовать strlen()
.Если это не так, вам, вероятно, следует добавить параметр длины строки к самому IRC::SendBuf()
.