Перейти к содержимому


Фотография

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

чат сервер broadcast

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 9

#1 Оффлайн   Metall_East

Metall_East
  • Пользователи
  • Сообщений: 6
  • Уровень сигнала: 0%
  • В игре: 0 час. 0 мин.
  • ГородМинск

Отправлено 23 Июнь 2015 - 17:51

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

 

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

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

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

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

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

 

Сервер

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

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

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

 

Клиент

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

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

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

 

Ссылка на чат: https://github.com/M...ree/master/Chat


Сообщение отредактировал Metall_East: 15 Июль 2016 - 16:47

  • Totoro и cloud это нравится

#2 Оффлайн   Totoro

Totoro
  • Хранители Кода
  • Сообщений: 1 734
  • Уровень сигнала: 0,3%
  • В игре: 2 час. 13 мин.

Награды

                                      

Отправлено 23 Июнь 2015 - 18:04

Чтобы не было проблем с разной длинной символов, возьми unicode.len(string) из Unicode API. (http://ocdoc.cil.li/api:unicode)


  • Metall_East это нравится

#3 Оффлайн   Metall_East

Metall_East
  • Автор темы
  • Пользователи
  • Сообщений: 6
  • Уровень сигнала: 0%
  • В игре: 0 час. 0 мин.
  • ГородМинск

Отправлено 23 Июнь 2015 - 18:09

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



#4 Оффлайн   Zer0Galaxy

Zer0Galaxy
  • Гуру
  • Сообщений: 1 228
  • Уровень сигнала: 0%
  • В игре: 0 час. 0 мин.

Награды

   5                              

Отправлено 23 Июнь 2015 - 18:18

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

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


  • Metall_East это нравится

#5 Оффлайн   Metall_East

Metall_East
  • Автор темы
  • Пользователи
  • Сообщений: 6
  • Уровень сигнала: 0%
  • В игре: 0 час. 0 мин.
  • ГородМинск

Отправлено 23 Июнь 2015 - 18:21

Зачем три модема на сервере?

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

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

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


Сообщение отредактировал Metall_East: 23 Июнь 2015 - 19:01


#6 Оффлайн   Zer0Galaxy

Zer0Galaxy
  • Гуру
  • Сообщений: 1 228
  • Уровень сигнала: 0%
  • В игре: 0 час. 0 мин.

Награды

   5                              

Отправлено 23 Июнь 2015 - 18:30

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

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

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



#7 Оффлайн   Metall_East

Metall_East
  • Автор темы
  • Пользователи
  • Сообщений: 6
  • Уровень сигнала: 0%
  • В игре: 0 час. 0 мин.
  • ГородМинск

Отправлено 23 Июнь 2015 - 18:35

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

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

 

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


Сообщение отредактировал Metall_East: 23 Июнь 2015 - 18:41


#8 Оффлайн   Alex

Alex
  • Администраторы
  • Сообщений: 3 735
  • Уровень сигнала: 52,61%
  • В игре: 392 час. 51 мин.

Награды

                 

Отправлено 23 Июнь 2015 - 19:49

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

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

 

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

 

Игрок Metall_East добавлен в вайт-лист.


  • Fingercomp и Metall_East это нравится

#9 Оффлайн   LeshaInc

LeshaInc
  • Пользователи
  • Сообщений: 1 204
  • Уровень сигнала: 15,61%
  • В игре: 116 час. 32 мин.
  • ГородЛуна

Награды

                       

Отправлено 23 Июнь 2015 - 20:22

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



#10 Оффлайн   Metall_East

Metall_East
  • Автор темы
  • Пользователи
  • Сообщений: 6
  • Уровень сигнала: 0%
  • В игре: 0 час. 0 мин.
  • ГородМинск

Отправлено 24 Июнь 2015 - 00:07

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

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







Темы с аналогичным тегами чат, сервер, broadcast

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных