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