Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

TCP сервер Unix

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Компилируемые языки] >> TCP сервер Unix
Имя
Сообщение << Старые топики   Новые топики >>
TCP сервер Unix - 2007-12-03 19:21:46.303333   
Alex McTerry

Сообщений: 125
Оценки: 0
Присоединился: 2005-10-27 12:33:00
Есть клиент и сервер, написанные на С под Unix.
Но сервер может работать только с одним клиентом.
Каким образом реализовать возможность работы с несколькими клиентами?
Находил информацию, что это делается через fork(), но как так и не нашел.
Post #: 1
RE: TCP сервер Unix - 2007-12-03 21:54:01.520000   
rgo

Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
находишь в сервере место, где он говорит accept, и после accept, после того как убедились что никаких ошибок нету, говоришь:
pid = fork (); if (pid != 0) { /* процесс папа */ close (socket); /* тот который был получен после accept*/ /* и теперь надо как-то вернуться к accept. */ } else if (pid == 0) { /* процесс дочерь */ /* работаем с клиентом */ exit (0); } единственное чего тут не хватает – такой сервер будет плодить зомбиков. но надо просто повесить обработчик сигнала SIGCHLD и в нём вызывать waitpid. ну и, конечно, перед тем как сервер-папа вызовет exit, он должен всех чайлдов дождаться при помощи wait.
Post #: 2
RE: TCP сервер Unix - 2007-12-04 00:41:01.456666   
Alex McTerry

Сообщений: 125
Оценки: 0
Присоединился: 2005-10-27 12:33:00
спс. попробую)))
Post #: 3
Страниц:  [1]
Все форумы >> [Компилируемые языки] >> TCP сервер Unix







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.