Мне нужно реализовать серверный / клиентский код на языке C. Сервер должен иметь возможность принимать ровно четыре соединения одновременно.
Я не могу заставить это работать.Что я сделал до сих пор:
1. создайте сокет
2. установите его в неблокирующее: fcntl(sock,F_SETFL, O_NONBLOCK);
3. свяжите его
4. слушайте: listen(sock, 4);
Часть, в которой я не совсем уверен, заключается в том, как принять соединение клиента.Мой код выглядит примерно так:
while (1) {
if ((sockfd = accept(sock, (struct sockaddr *) &client_addr, &client_size)) < 0) {
perror("Error\n");
}
read(sockfd, &number, sizeof(number));
write(sockfd, &number, sizeof(number));
}
Когда я выполняю клиентский и серверный код, клиент, кажется, записывает что-то в сокет, который сервер никогда не получает, и все блоки выполнения.Как правильно принимать соединения от нескольких клиентов?