Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.03.28;
Скачать: [xml.tar.bz2];




Вниз

Массивы и IP 


Michael C   (2002-03-11 17:13) [0]

Ситуация.
Есть переменные с полным адресом, есть переменные только с адресом машины, все это выбрано из файла. Так вот если адрес 198.162.33, то весь адрес кидатся в массив, точнее номеру эл-та массива присваивается адрес, ну вот так:

If S="192.168.33" then
Mas[StrToInt (A)]:= Mas[StrToInt (A)]+ StrToInt(N3);
If N="192.168.33" then
Mas[StrToInt (D)]:= Mas[StrToInt (D)]+ StrToInt(N3);


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



Anatoly Podgoretsky   (2002-03-11 20:50) [1]

Что такое A, D, N3 и их значения, типыТипы и размерность массива Mas
Сем отличается полный адрес от адреса массива?
Массив у тебя вроде бы числовой, а адрес в строковом виде, как преобразовываешь.
Видишь сколько неизвестных переменных в твоем вопросе.



Michael C   (2002-03-12 09:37) [2]

A и D это номер машины, т.е. последняя цифра в IP,
S и N это соответственно входящий и исходящий траффик,
N3 это поле размер,
Из этого => что есть три столба, вх., исх. адреса, и размер-N3/
Да массив числовой, тут номер элемента массива есть номер машины(A или D). Этими четырямя строчками я складываю размер всех одинаковых адресов, или могет неправильно?
Нужно отобразить адрес и напротив суммарный траффик, желательно в файл.



Anatoly Podgoretsky   (2002-03-12 21:07) [3]

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



Michael C   (2002-03-13 15:01) [4]

Вот весь код, Анатолий выручай... private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
ResultSz,ResultSIP,ResultDIP: String;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
Var
I,Z,E,B,K,PosSIP,PosDIP,L,M,Summ: Integer;
F1,FR: TextFile;
Str,N1,N2,N3,A,D,N,S,FStr: String;
Mas: array[1..4096] of Integer;
begin
AssignFile (F1,"C:\capture_Feb_5_2002_17_4_23_760.csv");
Reset (F1);
Readln (F1,Str);
Delete (Str,1,40) ;
AssignFile (FR,"c:\report.txt");
Rewrite (FR);
//While not eof(f1) do
For b:=1 to 1000 do
Begin
Readln(F1,Str);
N1:=Str;
N2:=Str;
N3:=Str;
For i := 1 to 3 do
Begin
PosSIP := pos(",",N1);
If PosSIP > 0 then
Delete(N1,1,PosSIP);
End;

PosSIP := pos(",",N1);
If (PosSIP > 0) then
ResultSIP := copy(N1,1,PosSIP-1);

For e := 1 to 4 do
Begin
PosDIP := pos(",",N2);
If PosDIP > 0 then
Delete(N2,1,PosDIP);
End;
PosDIP := pos(",",N2);
If PosDIP > 0 then
ResultDIP := copy(N2,1,PosDIP-1);

K := Pos(",", N3);
while K > 0 do
begin
N3 := Copy(N3, K+1, Length(N3));
K := Pos(",", N3);
end;

If ResultSIP <> "0.0.0.0" then
Begin
Memo1.Lines.Add(ResultSIP);
L:= LastDelimiter(".",ResultSip);
A:= copy(ResultSIP,L+1,3);
S:= copy(ResultDIP,L-12,L-1);
End;
Memo4.Lines.Add(A);
If S="192.168.33" then
Memo7.Lines.Add(S);

If ResultDIP <> "0.0.0.0" then
Begin
Memo2.Lines.Add(ResultDIP);
M:= LastDelimiter(".",ResultDIP);
D:= copy(ResultDIP,M+1,3);
N:= copy(ResultDIP,M-12,M-1);
End;
Memo5.Lines.Add(D);
If N="192.168.33" then
Memo6.Lines.Add(N);

If (ResultSIP <> "0.0.0.0") or (ResultDIP <> "0.0.0.0") then
Memo3.Lines.Add(N3);

If S="192.168.33" then
Mas[StrToInt (A)]:= Mas[StrToInt (A)]+ StrToInt(N3);
If N="192.168.33" then
Mas[StrToInt (D)]:= Mas[StrToInt (D)]+ StrToInt(N3);

FStr := A + " , " + IntTostr(Mas[StrToInt (A)]);

Writeln (FR,FStr);


End;
CloseFile(FR);
end;



end.



panov   (2002-03-13 15:21) [5]

Лучше бы уж кусок информации для обработки дал из исходного файла...



Michael C   (2002-03-13 16:00) [6]

Да пжлста, только помогитеTimestamp,Source MAC address,Dest MAC address,Source IP address,Dest IP address,Source port,Dest port,Size
16:56:52:990,00:C0:26:31:C4:5F,00:D0:59:0F:8A:63,217.73.192.19,192.168.33.55,80,2275,971
16:56:52:990,00:D0:59:0F:8A:63,00:C0:26:31:C4:5F,192.168.33.55,217.73.192.19,2275,80,60
16:56:52:990,00:D0:59:0F:8A:63,00:C0:26:31:C4:5F,192.168.33.55,217.73.192.19,2275,80,60
16:56:52:990,00:C0:26:31:C4:5F,00:D0:59:0F:8A:63,195.34.32.68,192.168.33.55,80,2280,62
16:56:52:990,00:D0:59:0F:8A:63,00:C0:26:31:C4:5F,192.168.33.55,195.34.32.68,2280,80,60
16:56:53:050,00:D0:59:0F:8A:63,00:C0:26:31:C4:5F,192.168.33.55,195.34.32.68,2280,80,314
16:56:53:270,00:C0:26:31:C4:5F,00:D0:59:0F:8A:63,194.186.36.143,192.168.33.55,80,2272,1514
16:56:53:320,00:D0:59:0F:8A:63,00:C0:26:31:C4:5F,192.168.33.55,212.111.95.40,2265,80,62



Michael C   (2002-03-13 16:00) [7]

Да пжлста, только помогите...
Timestamp,Source MAC address,Dest MAC address,Source IP address,Dest IP address,Source port,Dest port,Size
16:56:52:990,00:C0:26:31:C4:5F,00:D0:59:0F:8A:63,217.73.192.19,192.168.33.55,80,2275,971
16:56:52:990,00:D0:59:0F:8A:63,00:C0:26:31:C4:5F,192.168.33.55,217.73.192.19,2275,80,60
16:56:52:990,00:D0:59:0F:8A:63,00:C0:26:31:C4:5F,192.168.33.55,217.73.192.19,2275,80,60
16:56:52:990,00:C0:26:31:C4:5F,00:D0:59:0F:8A:63,195.34.32.68,192.168.33.55,80,2280,62
16:56:52:990,00:D0:59:0F:8A:63,00:C0:26:31:C4:5F,192.168.33.55,195.34.32.68,2280,80,60
16:56:53:050,00:D0:59:0F:8A:63,00:C0:26:31:C4:5F,192.168.33.55,195.34.32.68,2280,80,314
16:56:53:270,00:C0:26:31:C4:5F,00:D0:59:0F:8A:63,194.186.36.143,192.168.33.55,80,2272,1514
16:56:53:320,00:D0:59:0F:8A:63,00:C0:26:31:C4:5F,192.168.33.55,212.111.95.40,2265,80,62



Anatoly Podgoretsky   (2002-03-13 22:26) [8]

Код безообразный, поэтому разбираться в нем не буду, но если сделать предположение, что разборку строки ты провел правильно, то суммарный трафик по каждой машине считаеся правильно, то есть значения A, D, S, N, N3 правильные, можно сделать только следующие замечания:

1. A и D всегда у тебя в диапазоне от 0 до 255, а размерность массива 0..4096

2. массив не инициализирован, так что значения трафика от булды, неопределено

3. всб программу надо переписать, обратив внимание на оптимальные и понятные алгоритмы, для этого сначала поработай с бумагой, распиши все хорошо, проведи расчеты на бумаге и если все получится, то только после этого приступай к реализации алгоритма.

мой совет, разбей программу на функции, то есть мухи отдельно, котлеты отдельно.



Michael C   (2002-03-14 10:34) [9]

Товарищи, я ведь только учусь...
Будем стараться дорогой товарисч Anatoly Podgoretsky.
Благодарб за помощь.... :)




Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.03.28;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.74 MB
Время: 0.066 c
1-90931           Lamer2002             2002-03-13 14:13  2002.03.28  
Определение длины строки


6-91019           Vasya                 2002-01-14 15:35  2002.03.28  
По поводу подключения к интернет сказано много но..


1-90889           Colibri               2002-03-17 15:58  2002.03.28  
Про TImage


1-90840           -Stealtch-            2002-03-13 17:16  2002.03.28  
Проблема импортированного ActiveX


3-90773           AlexPro!              2002-03-01 17:59  2002.03.28  
Paradox - универсальный пароль !