Вверх ↑
Ответов: 273
Рейтинг: 29
#1: 2012-01-15 08:25:51 ЛС | профиль | цитата
касаемо чата. Любопытный исходник попался пару недель назад на глаза.
Вот он.
Сайт сейчас глючит, так что пока можно посмотреть его в [url=http://webcache.googleusercontent.com/search?q=cache:CXQYGANifAwJ:blitzetc.blitzmax.ru/index.php/%D0%94%D0%B5%D0%BB%D0%B0%D0%B5%D0%BC_%D1%87%D0%B0%D1%82]кеше гугля[/url]

Исходник для Blitz3D.
Он описывает чат с прыгающим сервером
Смысл в том, что один из участников чата назначается сервером. Если вдруг он исчезает, сервером назначается другой, и т.д.
Каждый из участников хранит полный список всех, кто в сети, потому перекинуть сервер на другого не проблема.

Большинство сетевого кода все-таки скрыто за стандартными функциями Blitz, но их не сложно додумать самому (например мониторинг участников - пинг, а лучше запрос раз в 30с с определенным кодом, кто жив - ответит)

Cтандартные сетевые коды Blitz
1-99 пользовательское сообщение;
100 к игре присоединился новый игрок;
101 игрок был удален из сетевой игры (NetMsgFrom () возвращает номер ID удаленного игрока);
102 оригинальный хост оставил игру, и ЭТА машина - теперь новый хост.
200 произошло Ваше фатальное исключение, и Вы должны выйти из игры.
Советую посмотреть и разобраться что к чему - чат простенький.
Поняв принцип, можно реализовать аналог на HiAsm, использовав свои коды сообщений.

Это похоже на распределенные сети, но здесь все-таки сервер есть.
Но можно немного расширить принцип, и построить полностью распределенную сеть.

Кстати, отсюда всего один шаг к распределенным хэш-таблицам. А они уже есть готовые.
Используя их, можно построить безсерверный аналог ICQ, даже с отложенной доставкой сообщений.
карма: 0

0