Я новичок и в сокетах, и в нитках.У меня есть этот код:
listen(socket_fd, 20);
/* Looooop */
while (1) {
newsocket_fd = accept(socket_fd,
(struct sockaddr *) &client_addr,
&client_len);
if (newsocket_fd < 0) {
error("ERROR on accept");
}
pthread_t thread;
pthread_create(&thread, NULL, run_thread, (void *) newsocket_fd);
pthread_join(thread, NULL);
}
Как создать новый поток для каждого нового подключения, а не для каждого запроса?Эти потоки должны быть запущены при установлении нового соединения, и затем эти потоки должны ждать запросов, обрабатывать эти запросы и, наконец, возвращаться при закрытии соединения. Для каждого соединения должен быть один поток. Вот код для run_thread
:
void
*run_thread(void *ptr) {
char buffer[256];
bzero(buffer, 256);
int n;
n = read((int) ptr, buffer, 255);
if (n < 0) error("ERROR Reading from socket");
printf("%s\n\n**********\n\n", buffer);
/* Parse buffer and return result */
char *result;
{
/* First, determine command, 4 characters */
/* (much code) */
}
n = write((int) ptr, result, strlen(result));
if (n < 0) error("ERROR Writing to socket");
}
Кто-нибудь может мне помочь?Благодаря.