Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Клуб программистов > Обсуждение статей
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.05.2009, 22:23   #161
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

По протоколу UDP работает тоже без серверов и знания IP, ...бродкаст, кто ответил - тот сервер, ...сервер вышел, передал полномочия клиенту с лучшим каналом.
Вот из-за таких программ оборудование большую часть времени разгребает "мертвые" пакеты, ...короче, мусора как на свалке, "зато быстро и без проблем для пользователя".
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его

Последний раз редактировалось Beermonza; 15.05.2009 в 22:25.
Beermonza вне форума Ответить с цитированием
Старый 18.05.2009, 19:42   #162
mnbvcxz11
Пользователь
 
Аватар для mnbvcxz11
 
Регистрация: 07.05.2009
Сообщений: 36
По умолчанию

Тема: Про защиту.

Эту систему могут просматривать или взламывать(Сокеты)?

Могут ли какие-нибудь вирусы повредить сервер?

И в общем про безопасность Клиент/Сервер на Сокетах надежно или нет?
mnbvcxz11 вне форума Ответить с цитированием
Старый 20.05.2009, 00:00   #163
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

Данную программу легко "повесить", в ней нет системы защиты протокола, иначе, показал бы я вам исходники
Сокеты - не объект взлома, это механизм создания сеансов связи. Объект взлома - протокол, ...если он не защищен кодированием, и сервер "не знает" как реагировать на фальсифицированные пакеты, то не стоит такой продукт выпускать в свет. По-любому, если у вас настроен FW или нормальный антивирусник, то вирусы не пролезут. Опасаться стоит падения сервера.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Старый 22.05.2009, 18:37   #164
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,899
По умолчанию

Ещё вопрос по бан системе
Вот как она у меня реализована
Код:
//Server
var
BanMas: array[0..255] of string; //Создаю массив

procedure TForm1.FormCreate(Sender: TObject);
...
//Заполнение массива данными из Memo
MBanIPs.Clear;
MBanIPs.Lines.LoadFromFile((ExtractFilePath(Application.ExeName))+'IPBanList.txt');

for n:=0 to MBanIPs.Lines.count-1 do
BanMas[n]:=(MBanIPs.Lines[n]);
...

//Бан юзера
procedure TForm1.Ban2Click(Sender: TObject);
var res: Integer;
begin
if UserListView.Items[UserListView.ItemIndex].Caption='! .''. [ADMIN]Server .''. !' then begin
Exit;
end;

if not (StatusBar1.Panels[1].Text='All users 1') then
res:=MessageBox(0, 'Are you sure you want to banned this user?', pChar(Form1.ProgramName), MB_YESNO or MB_ICONInformation or MB_DEFBUTTON1);
case res of
IDYES: Yes;
end;
end;

procedure TForm1.Yes;
begin
ServerSocket.Socket.Connections[ServerSocket.Socket.ActiveConnections-1].SendText('4'); //4 - Команда для бана
UpdDo:=True;

if not (StatusBar1.Panels[1].Text='All users 1') then

Form5.EIP.Text:=ServerSocket.Socket.Connections[ServerSocket.Socket.ActiveConnections-1].RemoteAddress;
Form5.BAddClick(Self);

MessageBox(0, pChar('Nick: ['+UserListView.Items[UserListView.ItemIndex].Caption+'] has been banned'), pChar(Form1.ProgramName), MB_ICONInformation);
end;

//Проверка при подключении
procedure TForm1.ServerTimerTimer(Sender: TObject);
...
begin
// условие на наличие установленных каналов
  If ServerSocket.Socket.ActiveConnections<>0 then
    Begin
// цикл по существующим каналам
      For i:=1 to ServerSocket.Socket.ActiveConnections do
        Begin
For n:=0 to 255 do
  Begin
    If BanMas[n] = ServerSocket.Socket.Connections[i-1].RemoteAddress then
      ServerSocket.Socket.Connections[i-1].SendText('4');
  end;
// сохраним пакет (если ничего не прислали, по пакет пустой)
          text:=ServerSocket.Socket.Connections[i-1].ReceiveText();
...
//Обработка команды 4 на клиенте
procedure TForm1.ClientSocketRead(Sender: TObject;
  Socket: TCustomWinSocket);
begin
...

// блокируем элементы управления забаненого    
   4: begin
   MMessage.Text:='Бан чата';
   MMessage.Enabled:=False;
   BBSend.Enabled:=False;
   Sendmessage1.Enabled:=False;
   Sendprivatemessage1.Enabled:=False;
   end;
   end;
...
Когда клиент закрывает программу (нормально закрывает без участия Диспетчера задач), то появляется ошибка Asynchronous socket error 10053 в след за ней Windows socket error: Удалённый хост принудительно разорвал существующее подключение (10054). Что я не так сделал?
Shouldercannon вне форума Ответить с цитированием
Старый 22.05.2009, 22:55   #165
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

Shouldercannon, по-подробнее, ошибка вылетает в режиме клиента или сервера? ...если в режиме сервера, то в посте #116 обработка ошибок сокета, у клиента такого быть не должно.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Старый 22.05.2009, 23:03   #166
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,899
По умолчанию

Ругается только в режиме сервер. Обработка ошибок работает, но всё-равно не приятно. И вот ещё одна проблема, иногда на сервере повисают ники "Неизвестный" из-за этого на клиентах невиден список пользователей, из-за чего такое может возникать?
И ещё один косяк. Так определяется с какого IP отправлено сообщение
Код:
MChatLogs.Lines.Add('IP: ['+ServerSocket.Socket.Connections[ServerSocket.Socket.ActiveConnections-1].RemoteAddress+'] > ['+DateTimeToStr(Now)+'] > '+text);
Вот первый клиент написал сообщение в самом начале строки появляется его IP потом текст сообщения далее кто-то тоже написал сообщение и IP присваивается того кто первым написал сообщение.
Вот:
IP: [77.108.194.247] > [22.05.2009 17:20:15] > 05110[17:20:34] Shouldercannon: Было дело //тут мой IP
IP: [77.108.194.247] > [22.05.2009 17:21:07] > 05110[17:21:22] ***VokS***: прикольно //тут снова присвоился мой IP, хотя сообщение не мое

Последний раз редактировалось Shouldercannon; 23.05.2009 в 11:03.
Shouldercannon вне форума Ответить с цитированием
Старый 23.05.2009, 14:16   #167
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

Код:
ServerSocket.Socket.Connections[ServerSocket.Socket.ActiveConnections-1].RemoteAddress
...этот код применяется только при коннекте, поскольку он обращается к списку каналов: ActiveConnections - сколько каналов всего, ActiveConnections-1 - номер последнего канала.
Все ошибки сокета система перехватывает, как бы коварно не останавливал работу удаленный клиент. Возможно, ошибки в коде на опрос клиентов, внимательно смотрите код.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Старый 24.05.2009, 20:23   #168
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,899
По умолчанию

Проблемка возникла. Хочу чат перевести на RichView, но не очень получается так как крепко привязано все дело в RichEdit. Как можно быстро отвязаться от RichEdit (шрифты)?

Последний раз редактировалось Shouldercannon; 24.05.2009 в 22:11. Причина: Накосячил сильно
Shouldercannon вне форума Ответить с цитированием
Старый 24.05.2009, 21:58   #169
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

Используйте его функции и процедуры, ...достаточно ставить точки и смотреть что предложит список.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Старый 25.05.2009, 12:48   #170
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,899
По умолчанию

Вот отключил шрифты в этого достаёт ошибка после отправки сообщения
'[' is not a valid integer value.
Вложения
Тип файла: rar Без шрифтов.rar (14.8 Кб, 31 просмотров)

Последний раз редактировалось Shouldercannon; 25.05.2009 в 15:26.
Shouldercannon вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
обновление в блоге - Создание клиент-сервера Pblog Обсуждение статей 0 03.10.2007 17:12
обновление в блоге - Диплом. Создание и продвижение сайта - готовь сани летом, а дипл Pblog Обсуждение статей 0 31.08.2007 20:00
обновление в блоге - USB Холодильник Pblog Обсуждение статей 0 25.06.2007 14:13
обновление в блоге - О ярлыках Pblog Обсуждение статей 0 27.05.2007 03:17