Я думаю, что проблема в этой строке кода while((n = ::recv(remoteSocket, buffer, strlen(buffer), 0)) 0)
Вы используете strlen(buffer)
для получения неверного размера буфера, вы должны передать sizeof(buffer)
в вашу Recv
функцию.
Если это не проблема, то это одна из проблем: P
Edit:
Как указали Кицунэ и Марк, sizeof (буфер) вернул бы 4 или 8 байт, поскольку он расположен в куче и является просто указателем на блок памяти. Если вы решите использовать стек (char buffer[20]
вместо new char[20]
), вы можете передать sizeof (буфер) в вашу функцию Recv. В противном случае, просто используйте жестко 20.
Вот как должен выглядеть ваш код:
void HandleConnection()
{
cout << "You are connected !!!" << endl;
char temp[20]; // <-- now we have an array
Recv(temp, sizeof(temp)); // <-- sizeof(temp) will give us 20, not 4 anymore
cout << temp << endl;
}
Recv(char* buffer, size_t buffer_size)
{
recv(remoteSocket, buffer, buffer_size, 0);
}