各位朋友,代码如下,如果修改这个过程,才能实时统计出SOURCEIP每秒的流量呢?而且必须该流量要转化成以KB为单位,希望能朋友能赐教,谢谢!
procedure TForm1.cap_ip1Cap(ip, proto, sourceIP, destIP, SourcePort,
DestPort: string; header: PChar; header_size: Integer; data: PChar;
data_size: Integer);
begin
if not ((ip = sourceIP) or (ip = destIP)) then // 仅本机
begin
exit;
end;
if ip = sourceIP then
begin
byte_out := byte_out + data_size + header_size;
end; if ip = destIP then
begin
byte_in := byte_in + data_size + header_size;
end; if check_filter(proto, sourceIP, destIP, SourcePort, DestPort, data, data_size) then exit;
setlength(buf_list[StringGrid1.RowCount - 2].buf, data_size);
copymemory(buf_list[StringGrid1.RowCount - 2].buf, data, data_size);
end;
procedure TForm1.cap_ip1Cap(ip, proto, sourceIP, destIP, SourcePort,
DestPort: string; header: PChar; header_size: Integer; data: PChar;
data_size: Integer);
begin
if not ((ip = sourceIP) or (ip = destIP)) then // 仅本机
begin
exit;
end;
if ip = sourceIP then
begin
byte_out := byte_out + data_size + header_size;
end; if ip = destIP then
begin
byte_in := byte_in + data_size + header_size;
end; if check_filter(proto, sourceIP, destIP, SourcePort, DestPort, data, data_size) then exit;
setlength(buf_list[StringGrid1.RowCount - 2].buf, data_size);
copymemory(buf_list[StringGrid1.RowCount - 2].buf, data, data_size);
end;
解决方案 »
- 我的服务器电脑是xp系统,已经设置了dcom配置,但是其他电脑还是启动不了客户端,请高手帮我,很急
- 子类化问题?
- 抛块破砖...想问问游戏大容量用户连接到服务器的最大连接数?
- 磁盘访问拦截问题
- 如何在dbgrid中使用check控件!
- 求将 Access 数据 导入到 SQL Server 的代码, SQL Server 数据 导出到 Access 的代码。最好能有重复记录处理方法(急)
- 数据库怎么了啊??
- 怎样能把JPEG图打包到资源文件中?在线等待
- 小问题!请问如何得到TRichedit的卷滚条的象素位置?
- FAX 软件
- Tapddatapacket的startstring和endstring问题
- 想问一下,汉字是怎么通过串口发送的,怎么个编码方式
function BytesToStr(const i64Size: Int64): string;
begin
if i64Size >= 1073741824 {1024*1024*1024} then
Result := format('%d.%2.2dGB', [i64Size shr 30, (i64Size * 100 shr 30) - (i64Size shr 30) * 100])
else if i64Size >= 1048576 {1024*1024} then
Result := format('%d.%2.2dMB', [i64Size shr 20, (i64Size * 100 shr 20) - (i64Size shr 20) * 100])
else if i64Size >= 1024 then
Result := format('%d.%2.2dKB', [i64Size shr 10, (i64Size * 100 shr 10) - (i64Size shr 10) * 100])
else Result := format('%dB', [i64Size]);
end;
//定义两个全局变量
var
DataCount:DWORD;
LastTick:DWORD;//在开始传输的地方加入两行初始化
DataCount:=0;
LastTick:=GetTickCount;
function BytesToStr(const i64Size: Int64): string;
begin
if i64Size >= 1073741824 {1024*1024*1024} then
Result := format('%d.%2.2dGB', [i64Size shr 30, (i64Size * 100 shr 30) - (i64Size shr 30) * 100])
else if i64Size >= 1048576 {1024*1024} then
Result := format('%d.%2.2dMB', [i64Size shr 20, (i64Size * 100 shr 20) - (i64Size shr 20) * 100])
else if i64Size >= 1024 then
Result := format('%d.%2.2dKB', [i64Size shr 10, (i64Size * 100 shr 10) - (i64Size shr 10) * 100])
else Result := format('%dB', [i64Size]);
end;//下面是你自己的过程
procedure TForm1.cap_ip1Cap(ip, proto, sourceIP, destIP, SourcePort,
DestPort: string; header: PChar; header_size: Integer; data: PChar;
data_size: Integer);
var
CurTick:DWORD;//定义一个
begin
if not ((ip = sourceIP) or (ip = destIP)) then // 仅本机
begin
exit;
end;
if ip = sourceIP then
begin
byte_out := byte_out + data_size + header_size;
end; if ip = destIP then
begin
byte_in := byte_in + data_size + header_size;
end; if check_filter(proto, sourceIP, destIP, SourcePort, DestPort, data, data_size) then exit;
setlength(buf_list[StringGrid1.RowCount - 2].buf, data_size);
copymemory(buf_list[StringGrid1.RowCount - 2].buf, data, data_size); //添加的代码
if GetTickCount-LastTick>=1000 then
begin
Inc(DataCount,data_size);
Caption:=BytesToStr(DataCount div (GetTickCount-LastTick))+'/s';
LastTick:=GetTickCount;
end;
end;
//定义两个全局变量
var
DataCount:DWORD;
LastTick:DWORD;//在开始传输的地方加入两行初始化
DataCount:=0;
LastTick:=GetTickCount;
function BytesToStr(const i64Size: Int64): string;
begin
if i64Size >= 1073741824 {1024*1024*1024} then
Result := format('%d.%2.2dGB', [i64Size shr 30, (i64Size * 100 shr 30) - (i64Size shr 30) * 100])
else if i64Size >= 1048576 {1024*1024} then
Result := format('%d.%2.2dMB', [i64Size shr 20, (i64Size * 100 shr 20) - (i64Size shr 20) * 100])
else if i64Size >= 1024 then
Result := format('%d.%2.2dKB', [i64Size shr 10, (i64Size * 100 shr 10) - (i64Size shr 10) * 100])
else Result := format('%dB', [i64Size]);
end;//下面是你自己的过程
procedure TForm1.cap_ip1Cap(ip, proto, sourceIP, destIP, SourcePort,
DestPort: string; header: PChar; header_size: Integer; data: PChar;
data_size: Integer);
begin
if not ((ip = sourceIP) or (ip = destIP)) then // 仅本机
begin
exit;
end;
if ip = sourceIP then
begin
byte_out := byte_out + data_size + header_size;
end; if ip = destIP then
begin
byte_in := byte_in + data_size + header_size;
end; if check_filter(proto, sourceIP, destIP, SourcePort, DestPort, data, data_size) then exit;
setlength(buf_list[StringGrid1.RowCount - 2].buf, data_size);
copymemory(buf_list[StringGrid1.RowCount - 2].buf, data, data_size); //添加的代码
if GetTickCount-LastTick>=1000 then
begin
Inc(DataCount,data_size);
Caption:=BytesToStr(DataCount div ((GetTickCount-LastTick)div 1000))+'/s';
LastTick:=GetTickCount;
end;
end;