Перейти к публикации
Форум - ComputerCraft
Metall_East

Беспроводной широковещательный клиент-серверный чат

Рекомендованные сообщения

Доброго времени суток.

 

Сервер должен иметь хотя бы одну беспроводную плату, все остальное по желанию.

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

Перед входом в чат пользователю необходимо пройти регистрацию и авторизоваться.

Также для запуска чата вам понадобится библиотека thread.lua, которая написана Zer0Galaxy.

Ссылка: http://pastebin.com/E0SzJcCx

 

Сервер

Работает в 2 потока: поток Ping и основной поток.

Поток Ping периодически опрашивает клиентов, тем самым узнавая количество пользователей онлайн.

Список пользователей сервер хранит в файле "users".

 

Клиент

Клиент работает в 2 потока. Поток-получатель и поток-отправитель.

Важно заметить, что клиенты в процессе работы не используют широковещательную отправку сообщений.

Выход из чата – команда exit.

 

Ссылка на чат: https://github.com/MetallEast/OC-programs/tree/master/Chat

Изменено пользователем Metall_East
  • Like 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Приму к сведению, рад услышать любой совет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Зачем три модема на сервере? Три порта можно открыть и на одном модеме.

А вообще, автор темы молодец. Алексу следует подумать над расширением белого списка.

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Зачем три модема на сервере?

Вот тут согласен более чем.

Но я иногда перфекционист, поэтому для меня смотреть на 3 модема на сервере с 3-мя потоками на 3-х разных портах приятнее :)

Возможно, для других действительно стоило выкинуть код с одним модемом для более простого восприятия кода.

P.S. Спасибо за библиотеку thread, вещь отличная.

Изменено пользователем Metall_East

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вроде нет необходимости прописывать адреса модемов в исходник программы. Можно как то так:

local modems=component.list("modem")
local modemPrim = component.proxy(modems())
local modemAuth = component.proxy(modems())
local modemReg  = component.proxy(modems())

Иначе, если ты поменяешь модем в сервере, придется править программу. Да и вообще, если ты перфекционист ...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Это да, но хотелось сохранить похожую структуру клиента и сервера.
На клиенте ведь в любом случае нужно прописывать прокси модема когда меняется на сервере.

С другой стороны так даже нагляднее, ведь я вижу какой прокси, какому уровню соответствует.

 

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

Изменено пользователем Metall_East

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Зачем три модема на сервере? Три порта можно открыть и на одном модеме.

А вообще, автор темы молодец. Алексу следует подумать над расширением белого списка.

 

Всегда рад рекомендациям опытных программистов  и старожилов форума.  Сам я физически не успею вникнуть в миллион программок и постов новичков.

 

[ok=Игрок Metall_East добавлен в вайт-лист.][/ok]

  • Like 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Надо будет прикрутить к очкам опен глассес, и написать гуишку.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Надо будет прикрутить к очкам опен глассес, и написать гуишку

GUI планирую разрабатывать, но сперва доведу основу до стабильного состояния.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

×