我在这里弄清楚这段代码有什么问题。它工作,然后我改变缓冲区大小,现在我已经打破它。这是一个基本项目,客户端从stdin读取数据,然后将其发送到服务器。服务器然后将其发送回去,客户端用ECHO将其打印出来:写在它前面。
在我的代码中,这是第一次使用。在第二次,它没有做任何事情,但服务器仍然收到并打印来自客户端的消息。在第三次尝试时,客户端打印出ECHO:ECHO:然后打印来自尝试2的消息。之后,它与尝试2的工作方式相同。我尝试仅包含相关的代码段,但如果需要,我可以提供更多。我认为这个问题是我不小心破产的愚蠢行为。
服务器:
while((c = accept(s, (sockaddr*)&caddr, (socklen_t*)&len))>0){
if(fork()==0){//child
while((i = read(c, buf, 128))>0){
buf[i]=0;
send(c, buf, 128, 0);
cout << buf;
}
cout << "end communication with " << c << endl;
exit(0);
}else{//parent
}
}
客户端:
while((i = read(0, message, 127)) > 0){
message[i] = 0;
send(sClient, message, 127, 0);
cout << "ECHO: ";
read(sClient, response, 127);
cout << response;
}