我正在學習如何使用c/C++網絡程序,並且我已經創建了一個服務器(TCP),它假設以特定方式響應來自客戶端的消息以執行此操作創建了一個服務器類將消息傳遞給該類並返回一個字符串以返回給客戶端的類。在Linux中的C++網絡編程:服務器問題
這是我的問題有時它會報告正確的字符串回其他時間,如果只是重複我發送到消息處理程序。哪裏沒有在代碼中我有它返回什麼傳入。所以我想知道我處理正確的消息?
其次,我不確定如何在while循環中保持連接打開以不斷地來回傳遞消息。你可以在下面的代碼中看到我是如何做到的,但我確信這是不正確的,任何幫助都會很棒。謝謝!
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
請原諒我的貧民區代碼
好吧,我們不知道你在recv和send之間做了什麼。給我們更多的細節! – slezica 2010-10-13 14:03:10
等一下,我重新閱讀你的問題,問題是它有時候會像字符串一樣迴應字符串,有時它會發送另一個你希望它發送的處理後的迴應?如果是這樣,那麼問題是在處理程序,而不是在這段代碼... – slezica 2010-10-13 14:05:46
我已經測試處理程序和處理程序使用相當廣泛的方法。我會張貼它,所以你可以看到。 – Pieces 2010-10-13 14:12:01