www.mudconnector.su

Национальный мадконнектор.
Текущее время: Вс апр 28, 2024 12:29 am

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
 Заголовок сообщения: MUD на нескольких портах
СообщениеДобавлено: Сб янв 31, 2009 7:33 pm 
Не в сети

Зарегистрирован: Ср авг 13, 2008 3:03 pm
Сообщений: 559
Откуда: Kharkiv
Знатоки кодовой базы Circle и его клонов (например, Былин), ткните меня, пожалуйста, мордой в фрагмент кода, в котором можно реализовать, чтобы MUD был доступен не по одному порту, а по нескольким. Жопой чувствую, что это список дескрипторов в модуле comm.cpp. Кроме того от безысходности я подумал, что можно применить внешнюю утилитку типа входящего прокси, который будет транслировать запросы на порты из списка в один конкретный порт на localhost

_________________
Пруль, кодер и билдер VMUD
http://mud.kharkov.org
http://virtustan.net
telnet 195.123.245.173 3000


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: MUD на нескольких портах
СообщениеДобавлено: Вт июл 28, 2009 2:21 pm 
Не в сети
Site Admin

Зарегистрирован: Пт май 16, 2008 4:14 pm
Сообщений: 1416
Помню что делали средствами ОС.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: MUD на нескольких портах
СообщениеДобавлено: Ср июл 29, 2009 9:56 am 
Не в сети

Зарегистрирован: Ср май 28, 2008 5:33 am
Сообщений: 77
Откуда: DreamLand
prool писал(а):
фрагмент кода, в котором можно реализовать, чтобы MUD был доступен не по одному порту, а по нескольким.

comm.c, ф-ии init_socket(), game_loop(), process_io(). Сейчас они реализованы для одного порта, соответственно создается один сервер-сокет и работают только с ним.
Переделать надо так, чтобы инициализировали и работали с несколькими сервер-сокетами. Грубо говоря:
Код:
void init_game(uint port) // сюда передавать не один номер порта, а несколько
{
    socket_t mother_desc; // вместо одного сервер-сокета будет список. его для удобства доступа можно сделать глобальным
    ....
    mother_desc=init_socket(port); // вызвать для нескольких портов и запомнить результаты
    ...
    game_loop(mother_desc);  // сюда передать все
    ....
    CLOSE_SOCKET(mother_desc); // не забыть закрыть все
}

Код:
void game_loop(socket_t mother_desc) // в параметры передавать все
{
   ...
   FD_SET(mother_desc, &input_set); // метить всеми
   ....
   process_io(...,mother_desc,...); // передать в параметры все
}

Код:
void process_io(...)
{
     ...
     if (FD_ISSET(mother_desc, &input_set))   // повторить для
            new_descriptor(mother_desc);        //  каждого из списка
}


Пока писала, нашла патч для циркуля, собственно, там примерно то же самое
http://developer.circlemud.org/contrib/ ... orts.patch


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: MUD на нескольких портах
СообщениеДобавлено: Ср июл 29, 2009 10:52 am 
Не в сети

Зарегистрирован: Ср авг 13, 2008 3:03 pm
Сообщений: 559
Откуда: Kharkiv
О, спасибо, буду делать

_________________
Пруль, кодер и билдер VMUD
http://mud.kharkov.org
http://virtustan.net
telnet 195.123.245.173 3000


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: MUD на нескольких портах
СообщениеДобавлено: Ср июл 29, 2009 11:42 am 
Не в сети
Site Admin

Зарегистрирован: Пт май 16, 2008 4:14 pm
Сообщений: 1416
Я уже стар и меня может глючить, но повторяю еще раз: как-то настройками ОС мы это делали...
Вроде бы. Погодите писать 1-2 недели и буду с этим разбираться в любом случае.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: MUD на нескольких портах
СообщениеДобавлено: Ср июл 29, 2009 11:53 am 
Не в сети

Зарегистрирован: Ср авг 13, 2008 3:03 pm
Сообщений: 559
Откуда: Kharkiv
А можно и так и так. Я не копался, но настройками xinetd (у меня FreeBSD) наверняка можно сделать проброс любого порта на мой мадовский порт 8888. Можно заставить примерно то же самое делать Апача или даже squid (вот извращение-то!)

Можно еще поставить программу-редиректор (написать ее опытному программисту пол часа (мне - неделя)), но и готовые вполне должны где-то быть

И наконец можно сделать это на уровне кода circle

Я буду делать, как мне покажется проще, потому что ленивый я. Как сделаю, напишу

_________________
Пруль, кодер и билдер VMUD
http://mud.kharkov.org
http://virtustan.net
telnet 195.123.245.173 3000


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: MUD на нескольких портах
СообщениеДобавлено: Чт авг 20, 2009 3:33 pm 
Не в сети

Зарегистрирован: Ср авг 13, 2008 3:03 pm
Сообщений: 559
Откуда: Kharkiv
ruffina писал(а):
Пока писала, нашла патч для циркуля, собственно, там примерно то же самое
http://developer.circlemud.org/contrib/ ... orts.patch


Спасибо! Всё оказалось просто и сразу заработало:

http://community.livejournal.com/virtus ... 34671.html

_________________
Пруль, кодер и билдер VMUD
http://mud.kharkov.org
http://virtustan.net
telnet 195.123.245.173 3000


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron