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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Демон на С++, под Linux 
:(
    Опции темы
Diesel Draft
Дата 14.5.2006, 02:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 876
Регистрация: 18.1.2005
Где: Lviv, Ukraine

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



Хочу написать веб чат. Сначала думал что напишу демона на PHP, но решил что С++ лучше. Сервер мой, потом мне ничего не мешает.

Меня интересует как можно создать и открыть сокет С++, а также слушать его. Приложение должно висеть в фоне, потому не должно быть никакой формы.
 


--------------------
НЕДОМА в маси 
PM MAIL WWW ICQ GTalk   Вверх
bsa
Дата 15.5.2006, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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



Код
socket_fd = socket(PF_INET, SOCK_STREAM, 0);
sockaddr_in sa_name;
sa_name.sin_family = AF_INET;
sa_name.sin_port = 12345;
sa_name.sin_addr = 0x00000000;
bind(socket_fd, (struct sockaddr*)&sa_name, SIN_LEN(&sa_name) );
listen(socket_fd, 99999);
cl_socket = accept(socked_fd, 0, 0);
 

Это сообщение отредактировал(а) bsa - 15.5.2006, 17:54
PM   Вверх
Spalax
Дата 16.5.2006, 07:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 21.3.2005

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



Цитата(bsa @ 15.5.2006,  17:54)
Код
socket_fd = socket(PF_INET, SOCK_STREAM, 0);
sockaddr_in sa_name;
sa_name.sin_family = AF_INET;
sa_name.sin_port = 12345;
sa_name.sin_addr = 0x00000000;
bind(socket_fd, (struct sockaddr*)&sa_name, SIN_LEN(&sa_name) );
listen(socket_fd, 99999);
cl_socket = accept(socked_fd, 0, 0);

Ну а если ты так откроешь сокет то если вдруг ты будешь использовать много процесорность и процес создавший такой сокет упадёт. Nulf придеться ждать ну около 5 минут пока сокет закроеться..... тоесть быстренько ребутнуть твоего демона не удасться ..... мой совет использовать чють по другому использовать
 
Код

  int lfd = 0;
  struct linger on;
  struct sockaddr_in german_socket;
  struct sockaddr *sp;

        sp = (struct sockaddr *)&german_socket;
    lfd = socket(AF_INET,SOCK_STREAM,0);
         f (lfd == -1) {
      printf("cannot open remote socket");
    }

    german_socket.sin_family = AF_INET; 
    german_socket.sin_addr.s_addr = htonl(INADDR_ANY); // Значит что будет слушать все айпишники 
    german_socket.sin_port = htons(8080); // На порту 8080
    
    setsockopt(lfd,SOL_SOCKET,SO_REUSEADDR,&on,sizeof(on));    // А ето добавлено для удобства =))        

    while (bind(lfd,sp,sizeof(german_socket))==-1) {
           printf("Cannot bind port will sleep ~ 15 sec\n");
                    sleep(15);
    }  

    if (listen(lfd,1024) == -1) {
          printf("cannot listen remote port");
          exit(0);
    }    
 
PM MAIL   Вверх
Diesel Draft
Дата 16.5.2006, 12:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 876
Регистрация: 18.1.2005
Где: Lviv, Ukraine

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



сенк бду розбератса
 


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

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

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


 




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


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

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