procedure ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket); - процедура формирования пакета данных для отправки на сервер
procedure FormActivate(Sender: TObject); - процедура авторизации пользователяTimer1Timer(Sender: TObject); - процедура отправки данных по таймеруReConnectTimer(Sender: TObject); - процедура переподключения к серверуClientSocket1Error(Sender: TObject; Socket: TCustomWinSocket;: TErrorEvent; var ErrorCode: Integer); - процедура ошибки подключения к серверуClientSocket1Disconnect(Sender: TObject;: TCustomWinSocket); - процедура разъединения с сервером SendTimer(Sender: TObject); - процедура отправки данных по таймеру
privateHandleNewAdapter(ATraffic : TTraffic); - процедура подключения нового адаптераHandleFreeze(ATraffic : TTraffic); - процедура «заморозки»HandleUnFreeze(ATraffic : TTraffic); - процедура «разморозки»LocateTraffic(AdapterIndex : DWord) : TTraffic; - процедура учета трафика ProcessMIBData; - процедура добавления данных о трафике
procedure ClearDisplay; - процедура отчистки данных
procedure RefreshDisplay; - процедура обнуления данных
public
{ Public declarations };: TMainForm;: TTraffic;:boolean;: Integer;:string;
{$R *.dfm}GetCompName:string;Len:Cardinal; pStr:PChar;pStr:=nil; Len:=256;pStr:=StrAlloc(Len);GetComputerName(pStr,Len) then:=pStr; finallypStr<>nil then StrDispose(pStr); end;;TMainForm.ClearDisplay;:integer;.Tabs.Clear;.Caption:='';j:=0 to GroupBox.ControlCount-1 doGroupBox.Controls[j] is TCustomEditTCustomEdit(GroupBox.Controls[j]).Text:='';;;TMainForm.TimerTimer(Sender: TObject);.Enabled:=false;;.Enabled:=true;;TMainForm.ClearCountersButtonClick(Sender: TObject);.Reset;;;TMainForm.cbOnTopClick(Sender: TObject);cbOnTop.Checked=trueFormStyle:=fsSTAYONTOPFormStyle:=fsNORMAL;;
TMainForm.FormDestroy(Sender: TObject);: integer;.OnTimer:=nil;:=nil;i:=0 to -1+TrafficTabs.Tabs.Count do.Tabs.Objects[i].Free;;TMainForm.TrafficTabsChange(Sender: TObject; NewTab: Integer; var AllowChange: Boolean);NewTab=-1ActiveTraffic:=nil;ActiveTraffic:=TTraffic(TrafficTabs.Tabs.Objects[NewTab]);.Socket.SendText(Nick);.Socket.SendText('Адаптер -'+ledAdapterDescription.text);.Socket.SendText('MAC-Адрес -'+ledMACAddress.Text);.Socket.SendText('Скорость -'+ledSpeed.Text);.Socket.SendText('Начало в -'+ledStartedAt.Text);.Socket.SendText('Продолжительность -'+ledActiveFor.Text);.Socket.SendText('Скорость -'+ledSpeed.Text);.Socket.SendText('Входящий трафик >>');.Socket.SendText('Трафик/сек -'+ledOctInSec.Text);.Socket.SendText('Пик/сек -'+ledPeakINSec.Text);.Socket.SendText('Средний/сек -'+ledAvgINSec.Text);.Socket.SendText('Всего -'+ledTotalIN.Text);.Socket.SendText('Исходящий трафик >>');.Socket.SendText('Трафик/сек -'+ledOctOUTSec.Text);.Socket.SendText('Пик/сек -'+ledPeakOUTSec.Text);.Socket.SendText('Средний/сек -'+ledAvgOUTSec.Text);.Socket.SendText('Всего -'+ledTotalOUT.Text);;;TMainForm.ExitButtonClick(Sender: TObject);;;TMainForm.FormCreate(Sender: TObject);.Port:=StrToInt(Edit3.Text);.Address:=Edit4.Text;.Open;(1500);.Interval:=1000;;:=nil;(Sender);.Enabled:=True;;TMainForm.RefreshDisplay;not Assigned(ActiveTraffic);;;ActiveTraffic do.Visible:=Connected;.Visible:=Connected;.Visible:=Connected;.Visible:=not Connected;.Enabled:=Running;.Enabled:=not Running;.Text:=Description;.Text:=MAC;.Text:=BitsToFriendlyString(Speed);.Text:=BytesToFriendlyString(InPerSec);.Text:=BytesToFriendlyString(PeakInPerSec);.Text:=BytesToFriendlyString(AverageInPerSec);.Text:=BytesToFriendlyString(InTotal);.Text:=BytesToFriendlyString(OutPerSec);.Text:=BytesToFriendlyString(PeakOutPerSec);.Text:=BytesToFriendlyString(AverageOutPerSec);.Text:=BytesToFriendlyString(OutTotal);.ledStartedAt.Text:=DateTimeToStr(StartedAt);.ledActiveFor.Text:=FriendlyRunningTime;.Caption:=GetStatus;;;TMainForm.ProcessMIBData;: IpHlpAPI.TMIBIfArray;: integer;: TTraffic;_IfTableMIB(MibArr);i:= 0 to -1 + TrafficTabs.Tabs.Count do:=TTraffic(TrafficTabs.Tabs.Objects[i]);ATraffic.ConnectedATraffic.Found:=false;;Length(MibArr)>0i:=Low(MIBArr) to High(MIBArr) do:=LocateTraffic(MIBArr[i].dwIndex);Assigned(ATraffic).NewCycle(MIBArr[i].dwInOctets, MIBArr[i].dwOutOctets, MIBArr[i].dwSpeed);:=TTraffic.Create(MIBArr[i], HandleNewAdapter);.Found:=true;.OnFreeze:=HandleFreeze;.OnUnFreeze:=HandleUnFreeze;;;;i:=0 to -1+TrafficTabs.Tabs.Count donot TTraffic(TrafficTabs.Tabs.Objects[i]).FoundTTraffic(TrafficTabs.Tabs.Objects[i]).MarkDisconnected;;;TMainForm.LocateTraffic(AdapterIndex : DWord): TTraffic;: cardinal;: TTraffic;:=nil;TrafficTabs.Tabs.Count=0Exit;j:= 0 to -1+TrafficTabs.Tabs.Count do:=TTraffic(TrafficTabs.Tabs.Objects[j]);ATraffic.InterfaceIndex=AdapterIndex:=ATraffic;.Found:=true;;;;;TMainForm.HandleNewAdapter(ATraffic: TTraffic);.Tabs.AddObject(ATraffic.IP, ATraffic);.TabIndex:=-1+TrafficTabs.Tabs.Count;;TMainForm.FreezeButtonClick(Sender: TObject);.Freeze;;TMainForm.UnFreezeButtonClick(Sender: TObject);.UnFreeze;;TMainForm.HandleFreeze(ATraffic: TTraffic);.FreezeButton.Enabled:=ATraffic.Running;.UnFreezeButton.Enabled:=not ATraffic.Running;;TMainForm.HandleUnFreeze(ATraffic: TTraffic);.FreezeButton.Enabled:=ATraffic.Running;.UnFreezeButton.Enabled:=not ATraffic.Running;;TMainForm.RemoveInactiveButtonClick(Sender: TObject);not ActiveTraffic.Connected.Free;:=nil;.Tabs.Delete(TrafficTabs.TabIndex);.SelectNext(False);;;;TMainForm.pcChange(Sender: TObject);.Visible:=pc.ActivePage=tsTraffic;;TMainForm.ledAdapterDescriptionChange(Sender: TObject);.Hint:=ledAdapterDescription.Text;.ShowHint:=Canvas.TextWidth(ledAdapterDescription.Text)>ledAdapterDescription.ClientWidth;;TMainForm.N2Click(Sender: TObject);MessageDlg('Вы действительно хотите выйти из программы?',mtConfirmation,[mbYes,mbNo],0)=mrYes:=true;;;;TMainForm.TrayIcon1Click(Sender: TObject);.Visible := False;.MainForm.Show;;TMainForm.ClientSocket1Connect(Sender: TObject;: TCustomWinSocket);.SendText('Ne>'+nick);(100);.SendText('>G<');(ListBox1.itemindex>=0) then begin.Socket.SendText(Nick);;;TMainForm.ClientSocket1Read(Sender: TObject;: TCustomWinSocket);mes,names,n,mmm:string; i:integer;:=Socket.ReceiveText;(mes[1]='m')and(mes[2]='m')and(mes[3]='m') then begin:=copy(mes,4,length(mes));(mmm);;(mes[1]='(')and(mes[2]=')')and(mes[3]='=') then begin:=copy(mes,4,length(mes));:=names+'= =';:=-1; ListBox1.Items.Clear;n<>' ' do begin:=i+1;:=''; while names[i+1]<>'='do begin i:=i+1;:=n+names[i] end;n<>' ' then ListBox1.Items.Add(n);;else(mes[1]='<')and(mes[2]='USER')and(mes[3]='>') then.SendText('Ne>'+nick)begin i:=ListBox2.Items.Add(mes);(ListBox2.Handle,_SETCURSEL,.Items.Count-1,0);;;TMainForm.FormActivate(Sender: TObject);beg; begin:nick:=InputBox('Авторизация','Ф.И.О.',nick+'<USER>');length(nick)<1 then begin('Вы не ввели Ф.И.О, Попробуйте ещё раз!'); goto beg end;.Visible:=True;;TMainForm.Button5Click(Sender: TObject);.Port:=StrToInt(Edit3.Text);.Address:=Edit4.Text;.Open;;TMainForm.Timer1Timer(Sender: TObject);.Socket.SendText(Nick);.Socket.SendText('Адаптер -'+ledAdapterDescription.text);.Socket.SendText('MAC-Адрес -'+ledMACAddress.Text);.Socket.SendText('Скорость -'+ledSpeed.Text);.Socket.SendText('Начало в -'+ledStartedAt.Text);.Socket.SendText('Продолжительность -'+ledActiveFor.Text);.Socket.SendText('Скорость -'+ledSpeed.Text);.Socket.SendText('Входящий трафик >>');.Socket.SendText('Трафик/сек -'+ledOctInSec.Text);.Socket.SendText('Пик/сек -'+ledPeakINSec.Text);.Socket.SendText('Средний/сек -'+ledAvgINSec.Text);.Socket.SendText('Всего -'+ledTotalIN.Text);.Socket.SendText('Исходящий трафик >>');.Socket.SendText('Трафик/сек -'+ledOctOUTSec.Text);.Socket.SendText('Пик/сек -'+ledPeakOUTSec.Text);.Socket.SendText('Средний/сек -'+ledAvgOUTSec.Text);.Socket.SendText('Всего -'+ledTotalOUT.Text);;TMainForm.ReConnectTimer(Sender: TObject);not ClientSocket1.Active then ClientSocket1.Open;;TMainForm.ClientSocket1Error(Sender: TObject;: TCustomWinSocket; ErrorEvent: TErrorEvent;ErrorCode: Integer);
begin('Ошибка, Не удаётся соединится с сервером!!!!');
end;TMainForm.ClientSocket1Disconnect(Sender:
TObject;: TCustomWinSocket);('Соединение
с
сервером
разоравано!!!!');;TMainForm.SendTimer(Sender:
TObject);.Socket.SendText(Nick);.Socket.SendText('Адаптер
-'+ledAdapterDescription.Text);.Socket.SendText('MAC-Адрес
-'+ledMACAddress.Text);.Socket.SendText('Скорость
-'+ledSpeed.Text);.Socket.SendText('Начало
в
-'+ledStartedAt.Text);.Socket.SendText('Продолжительность
-'+ledActiveFor.Text);.Socket.SendText('Скорость
-'+ledSpeed.Text);.Socket.SendText('Входящий
трафик
>>');.Socket.SendText('Трафик/сек
-'+ledOctInSec.Text);.Socket.SendText('Пик/сек
-'+ledPeakINSec.Text);.Socket.SendText('Средний/сек
-'+ledAvgINSec.Text);.Socket.SendText('Всего
-'+ledTotalIN.Text);.Socket.SendText('Исходящий
трафик
>>');.Socket.SendText('Трафик/сек
-'+ledOctOUTSec.Text);.Socket.SendText('Пик/сек
-'+ledPeakOUTSec.Text);.Socket.SendText('Средний/сек
-'+ledAvgOUTSec.Text);.Socket.SendText('Всего
-'+ledTotalOUT.Text);.Enabled:=false;;.
2.7.4 Описание модуля IPHLPAPI
Модуль IPHLPAPI служит для определения IP
- Адреса пользователя (Листинг 4).
Листинг 4.
IPHLPAPI;, winsock;_SIZE = 1;_ADAPTER_DESCRIPTION_LENGTH = 128;_ADAPTER_NAME_LENGTH = 256;_ADAPTER_ADDRESS_LENGTH = 8;_MINIMUM_ENTITIES = 32;_HOSTNAME_LEN = 128;_DOMAIN_NAME_LEN = 128;_SCOPE_ID_LEN = 256;_NODETYPE = 1;_TO_PEER_NODETYPE = 2;_NODETYPE = 4;_NODETYPE = 8;: array[0..8] of string[20] =
( 'UNKNOWN', 'BROADCAST', 'PEER_TO_PEER', '', 'MIXED', '', '', '', 'HYBRID'
);
_OTHER_ADAPTERTYPE = 0;_ETHERNET_ADAPTERTYPE = 1;_TOKEN_RING_ADAPTERTYPE = 2;_FDDI_ADAPTERTYPE = 3;_PPP_ADAPTERTYPE = 4;_LOOPBACK_ADAPTERTYPE = 5;_SLIP_ADAPTERTYPE = 6;: array[0..6] of string[10] =
( 'other', 'ethernet', 'tokenring',
'FDDI', 'PPP', 'loopback', 'SLIP' );_INTERFACE_NAME_LEN = 256; { mrapi.h
}_PHYSADDR = 8; { iprtrmib.h }_IFDESCR = 256; { --"--- }=
array[1..MAX_ADAPTER_ADDRESS_LENGTH] of byte;_ADDRESS_STRING =
^TIP_ADDRESS_STRING;_ADDRESS_STRING = array[0..15] of char;_ADDR_STRING =
^TIP_ADDR_STRING;_ADDR_STRING = packed record: PTIP_ADDR_STRING;:
TIP_ADDRESS_STRING;: TIP_ADDRESS_STRING;: DWORD;;= ^TFixedInfo;= packed record:
array[0..MAX_HOSTNAME_LEN + 4] of char;: array[0..MAX_DOMAIN_NAME_LEN + 4] of
char;: PTIP_ADDR_STRING;: TIP_ADDR_STRING;: UINT;: array[0..MAX_SCOPE_ID_LEN +
4] of char;: UINT;: UINT;: UINT;;= ^TMibIfRow;= packed record:
array[1..MAX_INTERFACE_NAME_LEN] of WCHAR;: DWORD;: DWORD;: DWORD;: DWORD;:
DWORD;: array[1..MAXLEN_PHYSADDR] of byte;: DWORD;: DWORD;: DWORD;: DWORD;:
DWORD;: DWORD;: DWORD;: DWORD;: DWORD;: DWORD;: DWORD;: DWORD;: DWORD;: DWORD;:
DWORD;: DWORD;: array[1..MAXLEN_IFDESCR] of char;;= array of TMIBIFRow;=
^TMIBIfTable;= packed record: DWORD;: array[0..ANY_SIZE - 1] of TMibIfRow;;_T =
array[1..325] of byte;_ADAPTER_INFO = ^TIP_ADAPTER_INFO;_ADAPTER_INFO = packed
record: PTIP_ADAPTER_INFO;: DWORD;: array[1..MAX_ADAPTER_NAME_LENGTH + 4] of
char;: array[1..MAX_ADAPTER_DESCRIPTION_LENGTH + 4] of char;: UINT;:
array[1..MAX_ADAPTER_ADDRESS_LENGTH] of byte;: DWORD;: UINT;: UINT;:
PTIP_ADDR_STRING;: TIP_ADDR_STRING;: TIP_ADDR_STRING;: TIP_ADDR_STRING;: BOOL;:
TIP_ADDR_STRING;: TIP_ADDR_STRING;: TTIME_T;: TTIME_T;;= ^TMibTCPRow;= packed
record: DWORD;: DWORD;: DWORD;: DWORD;: DWORD;;= ^TMibTCPTable;= packed record:
DWORD;: array[0..0] of TMibTCPRow;;= ^TMibTCPStats;= packed record: DWORD;:
DWORD;: DWORD;: DWORD;: DWORD;: DWORD;: DWORD;: DWORD;: DWORD;: DWORD;: DWORD;:
DWORD;: DWORD;: DWORD;: DWORD;;= ^TMibUDPRow;= packed record: DWORD;: DWORD;;=
^TMIBUDPTable;= packed record: DWORD;: array[0..ANY_SIZE - 1] of TMibUDPRow;;=
^TMIBUdpStats;= packed record: DWORD;: DWORD;: DWORD;: DWORD;: DWORD;;=
^TMibIPNetRow;= packed record: DWord;: DWord;: TMACAddress;: DWord;: DWord;;=
^TMibIPNetTable;= packed record: DWORD;: array[0..ANY_SIZE - 1] of
TMibIPNetRow;;= ^TMibIPStats;= packed record: DWORD;: DWORD;: DWORD;: DWORD;:
DWORD;: DWORD;: DWORD;: DWORD;: DWORD;: DWORD;: DWORD;: DWORD;: DWORD;: DWORD;:
DWORD;: DWORD;: DWORD;: DWORD;: DWORD;: DWORD;: DWORD;: DWORD;: DWORD;;=
^TMibIPAddrRow;= packed record: DWORD;: DWORD;: DWORD;: DWORD;: DWORD;,:
WORD;;= array of TMIBIPAddrRow;= ^TMibIPAddrTable;= packed record: DWORD;:
array[0..ANY_SIZE - 1] of TMibIPAddrRow;;= ^TMibIPForwardRow;= packed record:
DWORD;: DWORD;: DWORD;: DWORD;: DWORD;: DWORD;: DWORD;: DWORD;: DWORD;: DWORD;:
DWORD;: DWORD;: DWORD;: DWORD;;= ^TMibIPForwardTable;= packed record: DWORD;:
array[0..ANY_SIZE - 1] of TMibIPForwardRow;;= ^TMibICMPStats;= packed record:
DWORD;: DWORD;: DWORD;: DWORD;: DWORD;: DWORD;: DWORD;: DWORD;: DWORD;: DWORD;:
DWORD;: DWORD;: DWORD;;= ^TMibICMPInfo;= packed record: TMibICMPStats;:
TMibICMPStats;;GetAdaptersInfo( pAdapterInfo: PTIP_ADAPTER_INFO;: PULONG ):
DWORD;; external 'IPHLPAPI.DLL';GetNetworkParams( FixedInfo: PTFixedInfo;
pOutPutLen: PULONG ): DWORD;; external 'IPHLPAPI.DLL';GetTcpTable( pTCPTable:
PTMibTCPTable; pDWSize: PDWORD;: BOOL ): DWORD;; external
'IPHLPAPI.DLL';GetTcpStatistics( pStats: PTMibTCPStats ): DWORD;; external
'IPHLPAPI.DLL';GetUdpTable( pUdpTable: PTMibUDPTable; pDWSize: PDWORD;: BOOL ):
DWORD;; external 'IPHLPAPI.DLL';GetUdpStatistics( pStats: PTMibUdpStats ):
DWORD;; external 'IPHLPAPI.DLL';GetIpStatistics( pStats: PTMibIPStats ):
DWORD;; external 'IPHLPAPI.DLL';GetIpNetTable( pIpNetTable: PTMibIPNetTable;:
PULONG;: BOOL ): DWORD;; external 'IPHLPAPI.DLL';GetIpAddrTable( pIpAddrTable:
PTMibIPAddrTable;: PULONG;: BOOL ): DWORD;; external
'IPHLPAPI.DLL';GetIpForwardTable( pIPForwardTable: PTMibIPForwardTable;:
PULONG;: BOOL ): DWORD;; external 'IPHLPAPI.DLL';GetIcmpStatistics( pStats:
PTMibICMPInfo ): DWORD;; external 'IPHLPAPI.DLL';GetRTTAndHopCount(
DestIPAddress: DWORD; HopCount: PULONG;: ULONG; RTT: PULONG ): BOOL;; external
'IPHLPAPI.DLL';.
2.7.5 Описание модуля ServerUnit1
Модуль ServerUnit1
является главной формой в серверной части приложения, служит для получения
информации от клиентской части приложения и отображения ее (Листинг 5).
Листинг 5.
PageControl1: TPageControl; - компонент для создания в кладок
TabSheet1: TTabSheet; - вкладка
Memo1: TListBox; - компонент отображения данных
ListBox1: TListBox; - компонент для отображения данных
sSkinManager1: TsSkinManager; - компонент для установки скинов
sSkinProvider1: TsSkinProvider; - компонент для установки скинов
TabSheet2: TTabSheet; - вкладка
TrayIcon1: TTrayIcon; - компонент для сворачивания в трей
PopupMenu1: TPopupMenu;- компонент меню
N1: TMenuItem; - вкладка меню
N2: TMenuItem; - вкладка меню
Timer1: TTimer; - компонент таймер
TabSheet3: TTabSheet; - вкладка
Image1: TImage; - компонент для отображения изображения
Timer2: TTimer; - компонент таймер
Panel1: TPanel; - компонент панель
Image2: TImage; - компонент для отображения изображения
Image3: TImage; - компонент для отображения изображения
Label2: TLabel; - метка
Label3: TLabel; - метка
Label4: TLabel; - метка: TButton; - кнопка: TButton;- кнопка: TLabel; - метка: TSavePictureDialog; - компонент для сохранения данных в файл5: TImage; - компонент для отображения изображения
StringGrid1: TStringGrid; - компонент для отображения данных
Label6: TLabel; - метка
Label7: TLabel; - метка
procedure Button1Click(Sender: TObject); - процедура подключения к клиентуServerSocket1ClientDisconnect(Sender: TObject;: TCustomWinSocket); - процедура разъединения с клиентомServerSocket1ClientRead(Sender: TObject;: TCustomWinSocket); - процедура формирования пакета данных для отправки на серверServerSocket1Listen(Sender: TObject;: TCustomWinSocket); - процедура вывода на дисплей статуса подключенияButton4Click(Sender: TObject); - процедура отключения сервераSpinEdit1Change(Sender: TObject); -FormActivate(Sender: TObject); - процедура авторизацииMemo1Click(Sender: TObject); - процедура отображения данныхMemo1DrawItem(Control: TWinControl; Index: Integer;: TRect; State: TOwnerDrawState); - процедура изменения цвета строкиSpeedButton1Click(Sender: TObject);FormCreate(Sender: TObject); - процедура обработки событий N2Click(Sender: TObject); - процедура сворачивания программы в трей
procedure N1Click(Sender: TObject); - процедура разворачивания программы из трея
procedure Timer2Timer(Sender: TObject); - процедура отображения данных по таймеру
procedure Button2Click(Sender: TObject); - процедура отображения графика
procedure Button3Click(Sender: TObject); - процедура сохранения графика
{ Private declarations }
{ Public declarations };= 4;:
TForm1;:string;: array[1..NR] of real;: array[1..NR] of real;: array[1..NR] of
integer;: array[1..4] of TColor = (clRed,clGreen,clBlue,clYellow);
{$R *.dfm}GetNicks(listbox1:TListBox):string;ii:integer; names:string;ii:=0 to ListBox1.Items.Capacity-1 do:=names+'='+ListBox1.Items[ii];:='()'+names+'='+nick;;Obr : boolean;: real;: integer;: integer;:integer; name,mes,names:string;:= FALSE;
i:=1 to NR do
[i]:=Form1.Memo1.Items.Add(mes);
EConvertError do('Надо ввести данные во все' + #13 +
'ячейки второй колонки.');;
end;;;
:= 0;i:=1 to NR do:= sum + n[i];
i:=1 to NR do[i] := n[i] / sum;
:= 1;i := 2 to NR don[i] > n[m] then m:=i;
i :=1 to NR do[i] := Round((Form1.Image1.Height - 20) *[i]/n[m]);
:= TRUE;;TForm1.Button1Click(Sender:
TObject);.Port:=SpinEdit1.Value;.Open;.Enabled:=false;.Enabled:=true;.Enabled:=true;.Enabled:=true;;TForm1.ServerSocket1ClientDisconnect(Sender:
TObject;:
TCustomWinSocket);ii,gf:integer;:=ListBox1.Items.Capacity-1;.Items.Clear;ii:=0
to gf
doServerSocket1.Socket.Connections[ii].SendText('<S>');end;;TForm1.ServerSocket1ClientRead(Sender:
TObject;: TCustomWinSocket);ii:integer; name,mes,names:string;:=Socket.ReceiveText;:='';
names:='';(mes[1]='N')and(mes[2]='e')and(mes[3]='>')then
begin:=copy(mes,4,length(mes));.Items.Add(name);ii:=0 to
ListBox1.Items.Capacity
doServerSocket1.Socket.Connections[ii].SendText(GetNicks(ListBox1));end; end
else(mes[1]='>')and(mes[2]='G')and(mes[3]='<')then
begin.SendText(GetNicks(ListBox1));else.Items.Add(mes);ii:=0 to
ListBox1.Items.Capacity-1 do
try.Socket.Connections[ii].SendText(mes);end;(Memo1.Handle,_SETCURSEL,.Items.Capacity-1,0);;;TForm1.ServerSocket1Listen(Sender:
TObject;: TCustomWinSocket);i:integer;:=Memo1.Items.Add(TimeToStr(now)+'-
Connecting... ');(Memo1.Handle,LB_SETCURSEL,i,0);;
procedure diagr;= 25;= 10;,y,i: integer;Form1.Image1 do:=10;:=Height;.Brush.Color := clWindow;.Rectangle(0,0,Width,Height);i:=1 to 4 do.Brush.Color := BarColor[i];.Rectangle(x,y,x+WR,y-h[i]);.Brush.Color := clWindow;.TextOut(x,y-h[i]-15,(p[i]*100,ffGeneral,3,2)+'%');:= x + WR + DR;;:= x + 20;:=20;i:=1 to 4 do.Brush.Color := BarColor[i];.Rectangle(x,y,x+25,y+14);.Brush.Color := clWindow;.TextOut(x+WR+10,y,.StringGrid1.Cells[0,i]);.StringGrid1.Visible:=false;.StringGrid1.Cells[0,1]:='Трафик / сек';.StringGrid1.Cells[0,2]:='Пик / сек';.StringGrid1.Cells[0,3]:='Средний / сек';.StringGrid1.Cells[0,4]:='Всего';:= y + 20;;;;TForm1.Button4Click(Sender: TObject);:integer;.Close;:=Memo1.Items.Add(TimeToStr(now)+' - ServerSocket.Close');(Memo1.Handle,LB_SETCURSEL,i,0);.Enabled:=false;.Enabled:=true;.Enabled:=false;.Enabled:=false;;TForm1.SpinEdit1Change(Sender: TObject);.Click;;GetCompName:string;Len:Cardinal; pStr:PChar;pStr:=nil; Len:=256;pStr:=StrAlloc(Len);GetComputerName(pStr,Len) then:=pStr; finallypStr<>nil then StrDispose(pStr); end;;TForm1.FormActivate(Sender: TObject);:='Server';.Items.Clear;.Items.add(getcompname);.Items.Add(nick);;TForm1.Memo1Click(Sender: TObject);s:string;:=Memo1.Items[Memo1.itemindex];.Canvas.Font:=ListBox1.Font;Canvas.TextWidth(s)>=Memo1.Width then begin.Hint:=s; Memo1.ShowHint:=true; end else begin.ShowHint:=false; memo1.hint:=''; end;;TForm1.Memo1DrawItem(Control: TWinControl; Index: Integer;: TRect; State: TOwnerDrawState);K,f,al:STRING; X:INTEGER;:=copy(Memo1.Items[index],1,length(nick));k=nick THEN.Canvas.Brush.Color:=$9ae916;.Canvas.Font.Color:=$000000;.Canvas.FillRect(rect);.Canvas.TextOut(Rect.Left+1,Rect.Top+2,Memo1.Items[index]);;TForm1.SpeedButton1Click(Sender: TObject);SaveDialog1.Execute then.Items.SaveToFile(SaveDialog1.FileName+'.txt');;TForm1.FormCreate(Sender: TObject);:integer;.ItemIndex:=1;(2000);.Visible:=True;;.Enabled:=false;.Enabled:=false;;TForm1.N2Click(Sender: TObject);MessageDlg('Вы действительно хотите выйти из программы?',mtConfirmation,[mbYes,mbNo],0)=mrYes;;;TForm1.N1Click(Sender: TObject);.ActOnMinimize:=True;.Visible:=false;;TForm1.Timer2Timer(Sender: TObject);;;TForm1.Button2Click(Sender: TObject);Obrdiagr;;TForm1.Button3Click(Sender: TObject);SavePictureDialog1.Execute then.Picture.SaveToFile(SavePictureDialog1.FileName+'.jpeg');
end;.
3. Рекомендации по охране труда, технике
безопасности и охране окружающей среды
.1 Рабочее место администратора локальной сети
Несмотря на то, что сеть может охватывать значительную площадь и войти в нее (авторизоваться) можно с любого подключенного к ней компьютера, рабочее место администратора сети должно быть по возможности ближе к основному серверу сети.