Форум по Delphi программированию

 



Вернуться   Форум по Delphi программированию > Разное > Исходники и статьи
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 16.05.2011, 01:26
Человек_Борща Человек_Борща вне форума
Новичок
 
Регистрация: 17.09.2010
Адрес: Беларусь, г. Минск
Сообщения: 58
Версия Delphi: 7, 2010,XE
Репутация: 10
По умолчанию [Поиск] Исходники мониторинга cs 1.6,css серверов

Здравствуйте!

Ищу исходник програмы показывающий как ожно опрашивать cs 1.6 сервер. Либо сервер cs:source. Если такойе есть, поделитесь пожалуйста. Заранее благодарен!
Ответить с цитированием
  #2  
Старый 16.05.2011, 08:59
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Мониторинг серверов cs 1.6 глянь
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #3  
Старый 16.05.2011, 09:12
Человек_Борща Человек_Борща вне форума
Новичок
 
Регистрация: 17.09.2010
Адрес: Беларусь, г. Минск
Сообщения: 58
Версия Delphi: 7, 2010,XE
Репутация: 10
По умолчанию

уже смотрел. сылка на сырец не пашет. Смотрю доки по запросам к серверу. Я не имею понятия как их посылать....
Допусти как проверит что сервер жив?

как посталь тот же
Цитата:
A2A_PING
Ping the server to see if it exists, this can be used to calculate the latency to the server.

Request format Data Type Value
Heading byte 'i' (0x69)

Reply format
Goldsource servers Data Type Value
Heading byte 'j' (0x6A)
Content string Null

Source servers Data Type Value
Heading byte 'j' (0x6A)

Последний раз редактировалось Человек_Борща, 16.05.2011 в 09:25.
Ответить с цитированием
  #4  
Старый 16.05.2011, 09:39
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

ну там и без него можно разобраться.
для поиска серверов отправляем широковещательный udp:
IdUDPServer1.Broadcast(#255#255#255#255'TSource Engine Query'#0, 27015);
затем в OnUDPRead у IdUDPServer ловим ответы всех найденых серверов.

Код:
unit Unit1;

interface

uses
  IdSocketHandle,
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdUDPBase, IdUDPServer;

type
  TForm1 = class(TForm)
    IdUDPServer1: TIdUDPServer;
    MemoServers: TMemo;
    Button1: TButton;
    procedure IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
      ABinding: TIdSocketHandle);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
  ABinding: TIdSocketHandle);
var
  c: Char;
  s: String;
begin
  MemoServers.Lines.Add(ABinding.PeerIP+':'+IntToStr(ABinding.PeerPort));
  while AData.Read(c, 1)<>0 do if (c>=#32) and (c<=#255) then s:=s+c;
  MemoServers.Lines.Add(s);
end;

procedure TForm1.Button1Click(Sender: TObject);
//var
//  data: array of Char;
//  s: String;
begin
  IdUDPServer1.Broadcast(#255#255#255#255'TSource Engine Query'#0, 27015);
{
  IdUDPServer1.DefaultPort:=27015;
  s:=#255#255#255#255'TSource Engine Query'#0;
  SetLength(data, Length(s));
  StrPCopy(@data[0], s);
  IdUDPServer1.SendBuffer('10.4.84.102', 27015, data[0], Length(data));
}
end;

end.

только, как я уже писал, для какого это протокола не помню. да и не в этом суть...
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #5  
Старый 16.05.2011, 09:57
Человек_Борща Человек_Борща вне форума
Новичок
 
Регистрация: 17.09.2010
Адрес: Беларусь, г. Минск
Сообщения: 58
Версия Delphi: 7, 2010,XE
Репутация: 10
По умолчанию

Допустим а если сервера по указаному порту не существует? как это определить?

Определяет что сервер только работает. А вот что он не работает, программа не пишет.

Код:
procedure TForm1.ConnectBtnClick(Sender: TObject);
var
  data: array of Char;
     s: String;
begin
  UPD.Broadcast(#255#255#255#255'TSource Engine Query'#0, 27020);
  UPD.DefaultPort:=27020;
  s:=#255#255#255#255'TSource Engine Query'#0;
  SetLength(data, Length(s));
  StrPCopy(@data[0], s);
  UPD.SendBuffer('10.1.22.95', 27020, data[0], Length(data));
end;

procedure TForm1.UPDUDPRead(Sender: TObject; AData: TStream; ABinding: TIdSocketHandle);
var
  c: Char;
  s: String;
begin
  //LogBox.lines.Add(ABinding.PeerIP+':'+IntToStr(ABinding.PeerPort));
  s:='';
  while AData.Read(c, 1)<>0 do if (c>=#32) and (c<=#255) then s:=s+c;
  if not (s = '') then
  LogBox.lines.Add('Сервер работает!') else LogBox.lines.Add('Сервер не отвечает!');

end;

procedure TForm1.UPDStatus(ASender: TObject; const AStatus: TIdStatus;
  const AStatusText: String);
begin
LogBox.Lines.Add(AStatusText);
end;
Ответить с цитированием
  #6  
Старый 16.05.2011, 10:00
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

ну так если сервер не ответит значит он и не работает
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
Ответ



Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

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

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 11:22.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2020

ВКонтакте   Facebook   Twitter