![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
![]()
Сообщение
#1
|
|
Level 12 ![]() ![]() ![]() ![]() Класс: Вор Характер: Chaotic Neutral Раса: Человек NWN: Маппинг ![]() |
Вообщем, стэнд элоун ни разу не поднимал, следовательно, прошу вашей помощи, то бишь нуб гайд. (IMG:style_emoticons/kolobok_light/smile.gif)
Имеется: линукс (слакварь 10 вроде) модуль Нужно: автономная работа сервака Вопрос: что нужно скачать в каком порядке что куда подоткнуть Ну и скрипты к этому делу, чтобы при зависании или чрезмерном лагании сервака авторестарты (неплохо бы к этому делу присовокупить сохранение местоположения персонажа. (IMG:style_emoticons/kolobok_light/smile.gif) Кроме доброго слова, отблагодарить ничем не смогу. (IMG:style_emoticons/kolobok_light/smile.gif) Сообщение отредактировал Blaze - Mar 22 2006, 18:43 |
![]() |
![]()
Сообщение
#2
|
|
Level 8 ![]() Класс: Некромант Характер: Chaotic Evil Раса: Дракон NWN: Скриптинг [PW] ![]() |
2_advanced, именно форками обычно и делается...
CODE void main() { int socket; int newfd; struct sockaddr_in server, client; // то-же что и SOCKADDR в Win //... // тут создаём сокет и всё такое, прописываем структуры, биндим сокет // man socket // man bind // man listen while(1) { newfd = accept(socket, (struct sockaddr *)&client, sizeof(client)); if(!fork()) { // создаём потомка, код для потомка close(socket); // закрываем listen-сокет (внутри потомка, для родителя он открыт) // тут делаем перенаправление для конкретного клиента } else { // код для родителя close(newfd); // закрываем сокет на нового клиента, управление мы передали потомку } } } Вот примерно так. Это для сервера. Для клиента обычно используются не форки, а обычные треды, -lpthread опция для gcc... В принципе треды - те-же яйца только сбоку, там всё как в M$. А форк - родная никсовая фича. |
![]() ![]() |
Текстовая версия | Сейчас: 14th June 2025 - 21:32 |