Я изучаю, как программировать по сети с использованием c / c ++, и я создал сервер (TCP), который должен отвечать определенным образом на сообщения от клиента. Для этого я создал класс, который передает класс сервера. сообщение и возвращает строку для отчета клиенту.
Вот моя проблема, иногда она сообщает правильную строку в другое время, если просто повторяет то, что я отправил обработчику сообщений. Куда ни в каком месте кода я получаю возвращаемое, что было передано. Поэтому мне интересно, правильно ли я получаю сообщение?
Во-вторых, я не уверен, как сохранить соединение открытым во время цикла, чтобы непрерывно передавать сообщения туда и обратно. Вы можете увидеть, как я это сделал, в приведенном ниже коде, но я уверен, что это неверно, любая помощь по этому вопросу была бы полезна. Спасибо!
if (!fork())
{ // this is the child process
close(sockfd); // child doesn't need the listener
while ((numbytes = recv(new_fd, buf, MAXDATASIZE-1, 0)) > 0)
{
//numbytes = recv(new_fd, buf, MAXDATASIZE-1, 0);
buf[numbytes-1] = '\0';
const char* temp = ash.handleMessage(buf).c_str();
int size_of_temp = ash.handleMessage(buf).length();
send(new_fd, temp, size_of_temp, 0);
//send(new_fd, temp, size_of_temp+1, 0);
}
}//end if
Извините, пожалуйста, мой код гетто
Обрабатывает сообщение
Обработчик метода класса использует