Я написал программу на основе сервера/клиента. Основная функция программы заключается в том, что клиент отправит символ, например, на сервер, сервер увеличит его и отправит обратно. Поэтому, если клиент отправит «a», он получит «b». Но когда клиент отправляет «q», сервер должен закрыть соединение. Программа делает то, что должна делать, но на стороне клиента дважды печатает «Ввести символ» и «Символ с сервера». Также отправка «q» закрывает соединение, но только если вы отправите его во второй раз.программирование сокетов в c unix
Вот стороне сервера код
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");
}
Возможно, вы захотите добавить код для проверки того, что чтение и запись на самом деле преуспели – mathematician1975