Модераторы: xvr
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сокеты. Системный вызов poll. 
:(
    Опции темы
MemphisMayFire
Дата 18.12.2011, 16:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 22.4.2011
Где: москва

Репутация: нет
Всего: нет



Добрый день.
Нужно написать игровой сервер для игры в 21 спичку. Игра заключается в следующем: игроки берут из кучи по очереди 1, 2, или 3 спички. Проигрывает тот, кто берет последнюю спичку.
Собственно, сокет есть:
Код


Код

#include <unistd.h>
#include <stdio.h>
#include <sys/socket.h>
#include <poll.h>
#include <string.h>
#include <netinet/in.h>

int main(int argc, char *argv[]) {
    if (argc < 2) {
        printf("ERROR: wrong or empty port.\n");
        return 0;
    }
    struct pollfd;    
    int clientfd, portn, sockfd;
    struct sockaddr_in serv_addr; 
    struct sockaddr_in client_addr;
    struct pollfd fds[17];
    char buf[256];
    serv_addr.sin_port = htons(atoi(argv[1]));
    serv_addr.sin_addr.s_addr = INADDR_ANY; 
    serv_addr.sin_family = AF_INET;
    sockfd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
    if (sockfd < 0) { 
        printf("ERROR: can't create socket.\n");
        return 0;
    } 
    if (bind(sockfd, (struct sockaddr*)&serv_addr, sizeof(serv_addr)) < 0) {
        printf("ERROR: can't bind\n");
        return 0;
    }
    if(listen(sockfd, 5) < 0) {
        printf("ERROR: can't start listen.\n");
        return 0;
    }
    int len = sizeof(client_addr);
    clientfd = accept(sockfd, (struct sockaddr*)&client_addr, &len);
    printf("Client connected\n");
    sprintf(buf, "Hello\n");
    write(clientfd, buf, strlen(buf));
while(1) {
    pool();
    bzero(buf,256);
    read(clientfd, buf, 255);
    if (buf[0] == 'q') {
        close(clientfd);
    }
    printf("Readed from client: %s\n", buf);
}
    close(sockfd);
    close(clientfd);
}


нужно только организовать работу с клиентами(их может быть не больше 17), чтобы участники по очереди вынимали(отправляли на сервер число 1,2 или 3) спички из кучи.
для этого нужно использовать poll.
Объсните, пожалуйста, поподробней как с poll работать в данной ситуации(да и вообще как он работает, 1 раз с ним дело имею. хотя основную инфу, конечно, почитал), а то в гугле толком ничего не нашел :С.
спасибо.


PM MAIL   Вверх
boostcoder
Дата 18.12.2011, 18:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 16
Всего: 110



Цитата(MemphisMayFire @  18.12.2011,  16:57 Найти цитируемый пост)
 как с poll работать в данной ситуации

перевести маны на русский язык?
что объяснить? как?

PM WWW   Вверх
boostcoder
Дата 18.12.2011, 18:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 16
Всего: 110



пример: http://publib.boulder.ibm.com/infocenter/i.../rzab6/poll.htm
в конце страницы есть полезные ссылки.
PM WWW   Вверх
MemphisMayFire
Дата 18.12.2011, 20:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 22.4.2011
Где: москва

Репутация: нет
Всего: нет



спасибо!
то что нужно.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Программирование под Unix/Linux"
xvr
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой "Код".
  • Вопросы мобильной разработки тут
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема »


 




[ Время генерации скрипта: 0.0466 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.