|
|
|
class Socket, Unix, функция poll()
|
|||
|---|---|---|---|
|
#18+
Всем здравствуйте!!! Необходимо написать класс для работы с сокетами в Unix. Выглядет примерно так: есть 3 класса 1)Socket 2)ServerSocket 3)ClientSocket класс Socket содержит методы непосредственно работающие с сокетами (create(), bind, listen(), connect() и т.п.) класс ServerSocket содержит объекты: Socket *ptrListeningSocket; Слушающий сокет ClientSocket *ptrConnecting[1024]; массив сокетов клиентов Происходит все так: ClientSocket *ptrClientSocket; ptrClientSocket = new ClientSocket; далее есть метод Open(); ptrClientSocket->Open(host, port); На сервере тем временем ptrListeningSocket слушает. События происходящие на всех сокетах определяются с помощью функции poll() Кто работал с этой функцией? Для этой ф-ии тоже должен быть написан класс Poller. Один из методов этого класса реагирует на событие произошедшее на сокете и выполняет один из сл. методов: либо подключение клиента (если произошло событие на ListeningSocket), либо прием передачу сообщения, если событие произошло на одном из ptrConnecting[1024]; Вообщем, кто сталкивался с тем что здесь описанно? бязательные требования сокеты под Unix, и отслеживание событий при помощи poll(); У кого нибудь есть исходники подобных классов или кто нибудь знает как их написать. Я просто уже запутался. Если конкретно я не могу увязать класс Poller с классом ServerSocket... Заранее спасибо!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.03.2006, 21:56 |
|
||
|
class Socket, Unix, функция poll()
|
|||
|---|---|---|---|
|
#18+
ensВсем здравствуйте!!! Необходимо написать класс для работы с сокетами в Unix. Выглядет примерно так: есть 3 класса 1)Socket 2)ServerSocket 3)ClientSocket класс Socket содержит методы непосредственно работающие с сокетами (create(), bind, listen(), connect() и т.п.) класс ServerSocket содержит объекты: Socket *ptrListeningSocket; Слушающий сокет ClientSocket *ptrConnecting[1024]; массив сокетов клиентов Происходит все так: ClientSocket *ptrClientSocket; ptrClientSocket = new ClientSocket; далее есть метод Open(); ptrClientSocket->Open(host, port); На сервере тем временем ptrListeningSocket слушает. События происходящие на всех сокетах определяются с помощью функции poll() Кто работал с этой функцией? Для этой ф-ии тоже должен быть написан класс Poller. Один из методов этого класса реагирует на событие произошедшее на сокете и выполняет один из сл. методов: либо подключение клиента (если произошло событие на ListeningSocket), либо прием передачу сообщения, если событие произошло на одном из ptrConnecting[1024]; Вообщем, кто сталкивался с тем что здесь описанно? бязательные требования сокеты под Unix, и отслеживание событий при помощи poll(); У кого нибудь есть исходники подобных классов или кто нибудь знает как их написать. Я просто уже запутался. Если конкретно я не могу увязать класс Poller с классом ServerSocket... Заранее спасибо!!! А в чем собственно проблема? Сформировать массив из дискрипторов Код: plaintext 1. 2. 3. 4. 5. и передать указатель на 0 элемент и количество элементов функции poll(). потом пройтись по массиву и выбрать результаты. Если вы планируте делать корсплатформенную программу рекомендую использовать системный вызов select. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2006, 11:05 |
|
||
|
|

start [/forum/topic.php?fid=57&fpage=367&tid=2031785]: |
0ms |
get settings: |
4ms |
get forum list: |
21ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
62ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
45ms |
get tp. blocked users: |
2ms |
| others: | 225ms |
| total: | 380ms |

| 0 / 0 |
