powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / class Socket, Unix, функция poll()
2 сообщений из 2, страница 1 из 1
class Socket, Unix, функция poll()
    #33595231
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...

Заранее спасибо!!!
...
Рейтинг: 0 / 0
class Socket, Unix, функция poll()
    #33595825
onstat-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
struct pollfd {
                      int fd;           /* file descriptor */
                      short events;     /* requested events */
                      short revents;    /* returned events */
              };

и передать указатель на 0 элемент и количество элементов функции poll().
потом пройтись по массиву и выбрать результаты.

Если вы планируте делать корсплатформенную программу
рекомендую использовать системный вызов select.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / class Socket, Unix, функция poll()
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]