Материал: Автоматизированная система контроля трафика локально-вычислительной сети

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

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 Рабочее место администратора локальной сети

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