我正在用C编写一个简单的服务器/客户端套接字。客户端要求用户输入一条消息,服务器通过重复相同的方式做出响应。问题是,当我从客户端发送消息时,服务器通过附加额外字符来回应。我该如何解决。C套接字:为什么我的服务器最后会附加额外的字符?
这是我的客户端代码
while(1) {
bzero(buffer, BUFSIZE);
printf("Enter Message: ");
scanf("%s", buffer);
//send some data
if(send(socket_fd, buffer, strlen(buffer), 0) <0) {
fprintf(stderr,"sending failed\n");
return 1;
}
//receive a reply from the server
if(recv(socket_fd, server_reply, BUFSIZE,0)<0)
{
fprintf(stderr,"failed to reply. \n");
break;
}
fprintf(stdout, "Reply: %s\n ", servreply);
}
这是我的服务器代码
int read_size;
while((read_size = recv(client_socket_fd, buffer, BUFSIZE,0))>0)
{
// Reply back to the client
if (0 > write(client_socket_fd, buffer, strlen(buffer))) {
fprintf(stderr, "could not write back to socket\n");
} else {
fprintf(stdout, "message back to client\n");
}
}
if(read_size==0)
{
fprintf(stderr,"disconnected.\n");
fflush(stdout);
}
else if(read_size==-1){
fprintf(stderr, "error.\n");
}
这是输出
Enter Message: welcome
Reply: welcome
Enter Message: hello
Reply: hellome
Enter Message: hi
Reply: hillome
谢谢。另外,当你输入“你好吗”这样的信息时,你可以解释一下,服务器响应不同的线路。“如何”“是”和“你”分别位于三条不同的线路上 –
因为这就是它的工作原理。你需要1.使用'select'并阅读,直到没有其他东西可读,但这是棘手的。 2.使用消息传递协议来汇编消息,并在消息到达另一方时进行重构。 –