【发布时间】:2015-05-30 09:42:07
【问题描述】:
我编写了一个基于服务器/客户端的 c 程序。该程序的基本功能是客户端将发送一个字符,例如服务器,服务器将增加它并将字符发送回。因此,如果客户端发送“a”,它将收到“b”。但是当客户端发送一个“q”时,服务器应该关闭连接。该程序正在做它应该做的事情,但在客户端它打印“输入一个字符”和“来自服务器的字符”两次。发送“q”也会关闭连接,但前提是您第二次发送。
这是服务器端代码
void *client_thread(void *client_sockfd){
int socket=*(int *)client_sockfd;
while(1){
read(socket, &ch, 1);
if(ch=='q')
{
close(socket);
}
else
{
ch++;
write(socket, &ch, 1);
}
}
//close(socket);
printf("Connection closed with %d",socket);
}//end fucntion
客户端代码
while(1)
{
printf("Enter a character");
scanf("%c",&ch);
write(sockfd, &ch, 1);
read(sockfd, &ch, 1);
printf("char from server = %c\n", ch);
// close(sockfd);
//exit(0);
}
if(ch=='q'){
printf("Server closed the connection");
}
【问题讨论】:
-
您可能需要添加一些代码来检查读取和写入是否实际成功