nixp.ru v3.0

26 декабря 2024,
четверг,
14:42:40 MSK

Fatal написал 14 января 2005 года в 16:18 (980 просмотров) Ведет себя как мужчина; открыл 123 темы в форуме, оставил 484 комментария на сайте.

задача: процесс-сервер должен общаться только с друмя клиентами

АЛГОРИТМ I:

1.

а) сервер слушает сокет

б) клиент подключается к серверу

2.

а)ждёт подключеня второго клиента, и когда он подключается сервер закрывает прослушиваемый сокет

3.

а) сервер пораждает процесс копию fork-ом, закрывает сокеты (2 сокета) для передачи данных у потомка, у родителя они остаются открытыми, и пораждает самого себя через функцию execl

4.

a) сервер отсылает данные двум клиентам

б) соответственно они получают их.

5. далее сервер с клиентами обрабатывают эти данные и обмениваются ими

АЛГОРИТМ II:

создается отдельный процесс, в задачу которого входит открыть дескриптор для прослушивания и установать его под определённым номером (к примеру номер 4) с помощью функции dup2(). и все процессы сервера будут слушать именно этот сокет, а далее тотже алгоритм, только закрытие прослушиваемого сокета происходит после порождения нового процесса:

1.

а) сервер слушает сокет

б) клиент подключается к серверу

2.

а)ждёт подключеня второго клиента

3.

а) сервер пораждает процесс копию fork-ом, закрывает сокеты (2 сокета) для передачи данных у потомка, у родителя они остаются открытыми, и пораждает самого себя через функцию execl

4.

а) затем сервер закрывает прослушиваемый сокет

5.

a) сервер отсылает данные двум клиентам

б) соответственно они получают их.

6. далее сервер с клиентами обрабатывают эти данные и обмениваются ими

вопрос:

почему при первом алгоритме не получается осуществить задачу «каждый процесс-сервер должен общаться только с друмя клиентами», а при втором — получается?

спасибо!

pzh

зачем так сложно ?

один процесс

все решается через listen/accept/select

классическая схема, приведена в info libc

задержками для двух клиентов можно пренебречь

Последние комментарии

ecobeingecobeing.ru
Экология и вегетарианство на благо всем живым существам Планеты.