www.mudconnector.su https://forum.mudconnector.su/ |
|
MUD на нескольких портах https://forum.mudconnector.su/viewtopic.php?f=14&t=83 |
Страница 1 из 1 |
Автор: | prool [ Сб янв 31, 2009 7:33 pm ] |
Заголовок сообщения: | MUD на нескольких портах |
Знатоки кодовой базы Circle и его клонов (например, Былин), ткните меня, пожалуйста, мордой в фрагмент кода, в котором можно реализовать, чтобы MUD был доступен не по одному порту, а по нескольким. Жопой чувствую, что это список дескрипторов в модуле comm.cpp. Кроме того от безысходности я подумал, что можно применить внешнюю утилитку типа входящего прокси, который будет транслировать запросы на порты из списка в один конкретный порт на localhost |
Автор: | KadVar [ Вт июл 28, 2009 2:21 pm ] |
Заголовок сообщения: | Re: MUD на нескольких портах |
Помню что делали средствами ОС. |
Автор: | ruffina [ Ср июл 29, 2009 9:56 am ] |
Заголовок сообщения: | Re: MUD на нескольких портах |
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 |
Автор: | prool [ Ср июл 29, 2009 10:52 am ] |
Заголовок сообщения: | Re: MUD на нескольких портах |
О, спасибо, буду делать |
Автор: | KadVar [ Ср июл 29, 2009 11:42 am ] |
Заголовок сообщения: | Re: MUD на нескольких портах |
Я уже стар и меня может глючить, но повторяю еще раз: как-то настройками ОС мы это делали... Вроде бы. Погодите писать 1-2 недели и буду с этим разбираться в любом случае. |
Автор: | prool [ Ср июл 29, 2009 11:53 am ] |
Заголовок сообщения: | Re: MUD на нескольких портах |
А можно и так и так. Я не копался, но настройками xinetd (у меня FreeBSD) наверняка можно сделать проброс любого порта на мой мадовский порт 8888. Можно заставить примерно то же самое делать Апача или даже squid (вот извращение-то!) Можно еще поставить программу-редиректор (написать ее опытному программисту пол часа (мне - неделя)), но и готовые вполне должны где-то быть И наконец можно сделать это на уровне кода circle Я буду делать, как мне покажется проще, потому что ленивый я. Как сделаю, напишу |
Автор: | prool [ Чт авг 20, 2009 3:33 pm ] |
Заголовок сообщения: | Re: MUD на нескольких портах |
ruffina писал(а): Пока писала, нашла патч для циркуля, собственно, там примерно то же самое http://developer.circlemud.org/contrib/ ... orts.patch Спасибо! Всё оказалось просто и сразу заработало: http://community.livejournal.com/virtus ... 34671.html |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |