【发布时间】:2010-10-13 13:56:47
【问题描述】:
我正在学习如何使用 c/c++ 进行网络编程,并且我创建了一个服务器 (TCP),它假设以特定方式响应来自客户端的消息,以便执行此操作我创建了一个服务器类传递的类消息并返回一个字符串以报告给客户端。
这是我的问题,有时它会在其他时候报告正确的字符串,如果只是重复我发送给消息处理程序的内容。我在代码中的哪个位置没有返回传入的内容。所以我想知道我是否正确处理了获取消息?
其次,我不确定如何在 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
请原谅我的隔都代码
【问题讨论】:
-
好吧,我们不知道您在接收和发送之间做了什么。给我们更多细节!
-
等等,我重新阅读了您的问题,问题是它有时会在收到字符串时回显该字符串,有时它会发送另一个您希望它发送的已处理响应?如果是这样,那么问题出在处理程序中,而不是在这段代码中......
-
我已经非常广泛地测试了处理程序和处理程序使用的方法。不过我会把它贴出来让你看看。