Итак, у меня есть сервер, который должен создавать новый процесс для каждого нового соединения с сервером. Поэтому у меня будет несколько клиентов, подключающихся к одному серверу.
Когда соединение установлено, сервер должен возвращать случайный номер для каждого нового клиента.
ПРОБЛЕМА: сервер печатаетодин и тот же случайный номер для всех клиентов (терминалов), подключающихся к серверу.
Что должно произойти: дочерний процесс должен сгенерировать (rand ()) идентификатор для нового уникального клиентского соединения. Проверка каждого нового клиента подключается к серверу. Моя вилка верна?
while (1)
{
pid_t childpid; /* variable to store child's process id */
new_fd = accept(sockfd, (struct sockaddr *)&their_addr, &sin_size);
if ((childpid = fork()) == -1)
{ // fork failed.
close(new_fd);
continue;
}
else if (childpid > 0)
{ // parent process
printf("\n parent process\n");
}
else if (childpid == 0)
{ // child process
printf("\n child process\n");
printf("\n random num: %d\n", rand()); -----> Testing, should be unique for each client (its not!)
/* ***Server-Client Connected*** */
client_t client = generate_client();
}
printf("server: got connection from %s\n",
inet_ntoa(their_addr.sin_addr));
}