TCP сервер Unix
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
TCP сервер Unix - 2007-12-03 19:21:46.303333
|
|
|
Alex McTerry
Сообщений: 125
Оценки: 0
Присоединился: 2005-10-27 12:33:00
|
Есть клиент и сервер, написанные на С под Unix. Но сервер может работать только с одним клиентом. Каким образом реализовать возможность работы с несколькими клиентами? Находил информацию, что это делается через fork(), но как так и не нашел.
|
|
|
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.
|
|
|
RE: TCP сервер Unix - 2007-12-04 00:41:01.456666
|
|
|
Alex McTerry
Сообщений: 125
Оценки: 0
Присоединился: 2005-10-27 12:33:00
|
спс. попробую)))
|
|
|
|
|