⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit7.pas

📁 实现网络流量的生成,为cs结构,可以控制流量大小
💻 PAS
字号:
unit Unit7;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, BusinessSkinForm, StdCtrls, Mask, bsSkinBoxCtrls, bsSkinCtrls,
  bsMessages, bsSkinShellCtrls;

type
  Tpara_set = class(TForm)
    bsBusinessSkinForm1: TbsBusinessSkinForm;
    bsSkinMessage1: TbsSkinMessage;
    bsSkinOpenDialog1: TbsSkinOpenDialog;
    bsSkinSaveDialog1: TbsSkinSaveDialog;
    bsSkinPanel1: TbsSkinPanel;
    bsSkinStdLabel2: TbsSkinStdLabel;
    bsSkinStdLabel1: TbsSkinStdLabel;
    bsSkinStdLabel3: TbsSkinStdLabel;
    bsSkinStdLabel5: TbsSkinStdLabel;
    bsSkinStdLabel6: TbsSkinStdLabel;
    bsSkinEdit6: TbsSkinEdit;
    bsSkinEdit5: TbsSkinEdit;
    bsSkinEdit3: TbsSkinEdit;
    bsSkinEdit2: TbsSkinEdit;
    bsSkinEdit1: TbsSkinEdit;
    bsSkinTrackBar1: TbsSkinTrackBar;
    bsSkinTrackBar2: TbsSkinTrackBar;
    bsSkinButton1: TbsSkinButton;
    bsSkinButton2: TbsSkinButton;
    bsSkinButton3: TbsSkinButton;
    bsSkinSpeedButton3: TbsSkinSpeedButton;
    bsSkinSpeedButton2: TbsSkinSpeedButton;
    bsSkinSpeedButton1: TbsSkinSpeedButton;
    bsSkinStdLabel4: TbsSkinStdLabel;
    bsSkinEdit4: TbsSkinEdit;
    bsSkinListBox1: TbsSkinListBox;
    bsSkinStdLabel7: TbsSkinStdLabel;
    procedure bsSkinSpeedButton1Click(Sender: TObject);
    procedure bsSkinSpeedButton2Click(Sender: TObject);
    procedure bsSkinSpeedButton3Click(Sender: TObject);
    procedure bsSkinButton2Click(Sender: TObject);
    procedure bsSkinButton1Click(Sender: TObject);
    procedure bsSkinButton3Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure bsSkinTrackBar1Change(Sender: TObject);
    procedure bsSkinTrackBar2Change(Sender: TObject);
    //检查参数是否填写完整
    function CheckNull:boolean;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  para_set: Tpara_set;

implementation
uses unit1;//包含主界面单元

{$R *.dfm}


procedure Tpara_set.bsSkinSpeedButton1Click(Sender: TObject);
begin
     if self.bsSkinEdit4.Text<>'' then
     begin
        self.bsSkinListBox1.Items.Add(self.bsSkinEdit4.Text);
        self.bsSkinEdit4.Text:='';
     end
     else
        self.bsSkinMessage1.MessageDlg('请输入发送主机地址!',mtcustom,[mbyes],0);
end;

procedure Tpara_set.bsSkinSpeedButton2Click(Sender: TObject);
begin
     self.bsSkinListBox1.Items.Delete(self.bsSkinListBox1.ItemIndex);
end;

procedure Tpara_set.bsSkinSpeedButton3Click(Sender: TObject);
begin
     self.bsSkinListBox1.Items.Clear;
end;

procedure Tpara_set.bsSkinButton2Click(Sender: TObject);
var  input:textfile;
     openfilename:string;
     i:integer;
     str:string;
begin
     if self.bsSkinOpenDialog1.Execute then
     begin

        //检查从对话框返回的文件名是否包含后缀.par,确保包含后缀
        if ansipos('.par',self.bsSkinOpenDialog1.FileName)=0 then
           openfilename:=self.bsSkinOpenDialog1.FileName+'.par'
        else
           openfilename:=self.bsSkinOpenDialog1.FileName;

        //如果文件存在则读取数据
        if fileexists(openfilename) then
        begin
           assignfile(input,openfilename);
           reset(input);
           readln(input,str);
           self.bsSkinEdit1.Text:=str;//发送数据包大小
           readln(input,str);
           self.bsSkinEdit2.Text:=str;//接收端主机地址
           readln(input,str);
           self.bsSkinEdit3.Text:=str;//接收端主机端口
           readln(input,str);
           self.bsSkinEdit5.Text:=str;//发送速率
           readln(input,str);
           self.bsSkinEdit6.Text:=str;//统计速率

           self.bsSkinListBox1.Items.Clear;
           readln(input,str);
           while (str<>'END') do
           begin
              self.bsSkinListBox1.Items.Add(str);
              readln(input,str);
           end;

           closefile(input);
        end
        else
           self.bsSkinMessage1.MessageDlg('文件不存在!',mtcustom,[mbyes],0);
     end;
end;

procedure Tpara_set.bsSkinButton1Click(Sender: TObject);
var  output:textfile;
     savefilename:string;
     i:integer;
begin
     if self.CheckNull=true then
     begin
     //*************************
     if self.bsSkinSaveDialog1.Execute then
     begin

        //检查从对话框返回的文件名是否包含后缀.par
        if ansipos('.par',self.bsSkinSaveDialog1.FileName)=0 then
           savefilename:=self.bsSkinSaveDialog1.FileName+'.par'
        else
           savefilename:=self.bsSkinSaveDialog1.FileName;

        //检查文件是否已经存在
        if fileexists(savefilename) then
        begin
           self.bsSkinMessage1.MessageDlg('该文件已经存在!',mtcustom,[mbyes],0);
        end
        else
        begin
        //如果不存在同名文件的话,将参数写入
           assignfile(output,savefilename);
           rewrite(output);
           writeln(output,self.bsSkinEdit1.Text); //发送数据包大小
           writeln(output,self.bsSkinEdit2.Text); //接收端主机地址
           writeln(output,self.bsSkinEdit3.Text); //接收端主机端口
           writeln(output,self.bsSkinEdit5.Text); //发送速率
           writeln(output,self.bsSkinEdit6.Text); //统计速率
           //发送端主机地址
           for i:=0 to self.bsSkinListBox1.Items.Count-1 do
               writeln(output,self.bsSkinListBox1.Items.Strings[i]);
           //结束标志
           writeln(output,'END');
           closefile(output);
        end;
     end;
     //*************************
     end;
end;

procedure Tpara_set.bsSkinButton3Click(Sender: TObject);
var  output:textfile;
     i:integer;
begin
     if self.CheckNull=true then
     begin
     //*************************
     assignfile(output,'mysettings.ini');
     rewrite(output);
     writeln(output,self.bsSkinEdit1.Text); //发送数据包大小
     writeln(output,self.bsSkinEdit2.Text); //接收端主机地址
     writeln(output,self.bsSkinEdit3.Text); //接收端主机端口
     writeln(output,self.bsSkinEdit5.Text); //发送速率
     writeln(output,self.bsSkinEdit6.Text); //统计速率
     //发送端主机地址
     for i:=0 to self.bsSkinListBox1.Items.Count-1 do
        writeln(output,self.bsSkinListBox1.Items.Strings[i]);
     //结束标志
     writeln(output,'END');
     closefile(output);
     if self.bsSkinMessage1.MessageDlg('您确定要这样设置吗?',mtConfirmation, [mbYes, mbNo],0)=mrYes then
     begin
        //设置完成后使得发送按钮可以按,同时隐藏设置窗体
        main.N2.Enabled:=true;

        //将参数列入main中的memo
        main.bsSkinMemo1.Lines.Add('************************************************************************************************************');
        main.bsSkinMemo1.Lines.Add('您设置的参数如下:');
        main.bsSkinMemo1.Lines.Add('发送数据包大小:'+self.bsSkinEdit1.Text);
        main.bsSkinMemo1.Lines.Add('接收端主机地址:'+self.bsSkinEdit2.Text);
        main.bsSkinMemo1.Lines.Add('接收端主机端口:'+self.bsSkinEdit3.Text);
        main.bsSkinMemo1.Lines.Add('发送速率:'+self.bsSkinEdit5.Text);
        main.bsSkinMemo1.Lines.Add('统计速率:'+self.bsSkinEdit6.Text);
        main.bsSkinMemo1.Lines.Add('您一共设置了'+inttostr(self.bsSkinListBox1.Items.Count)+'个发送端!');
        for i:=0 to self.bsSkinListBox1.Items.Count-1 do
           main.bsSkinMemo1.Lines.Add('发送端主机'+inttostr(i+1)+'的地址:'+self.bsSkinListBox1.Items.Strings[i]);

        self.Hide;
     end;
     //*************************
     end;
end;

procedure Tpara_set.FormShow(Sender: TObject);
var  input:textfile;
     i:integer;
     str:string;
begin
     if fileexists('mysettings.ini') then
     begin
        assignfile(input,'mysettings.ini');
        reset(input);
        readln(input,str);
        self.bsSkinEdit1.Text:=str;//发送数据包大小
        readln(input,str);
        self.bsSkinEdit2.Text:=str;//接收端主机地址
        readln(input,str);
        self.bsSkinEdit3.Text:=str;//接收端主机端口
        readln(input,str);
        self.bsSkinEdit5.Text:=str;//发送速率
        self.bsSkinTrackBar1.Value:=strtoint(str);
        readln(input,str);
        self.bsSkinEdit6.Text:=str;//统计速率
        self.bsSkinTrackBar2.Value:=strtoint(str)-100;

        self.bsSkinListBox1.Items.Clear;
        readln(input,str);
        while (str<>'END') do
        begin
        self.bsSkinListBox1.Items.Add(str);
        readln(input,str);
        end;

        closefile(input);
     end
     else
        self.bsSkinMessage1.MessageDlg('未找到设置文件,将载入默认设置!',mtcustom,[mbyes],0);
end;

procedure Tpara_set.bsSkinTrackBar1Change(Sender: TObject);
begin
     self.bsSkinEdit5.Text:=inttostr(self.bsSkinTrackBar1.Value);
end;

procedure Tpara_set.bsSkinTrackBar2Change(Sender: TObject);
begin
     self.bsSkinEdit6.Text:=inttostr(self.bsSkinTrackBar2.Value+100);
end;

//检查各项参数是否填写完整
function Tpara_set.CheckNull:boolean;
begin
     if self.bsSkinEdit1.Text='' then
     begin
        self.bsSkinMessage1.MessageDlg('参数填写不完整!',mtcustom,[mbyes],0);
        result:=false;
     end
     else if self.bsSkinEdit2.Text='' then
     begin
        self.bsSkinMessage1.MessageDlg('参数填写不完整!',mtcustom,[mbyes],0);
        result:=false;
     end
     else if self.bsSkinEdit3.Text='' then
     begin
        self.bsSkinMessage1.MessageDlg('参数填写不完整!',mtcustom,[mbyes],0);
        result:=false;
     end
     else if self.bsSkinEdit5.Text='' then
     begin
        self.bsSkinMessage1.MessageDlg('参数填写不完整!',mtcustom,[mbyes],0);
        result:=false;
     end
     else if self.bsSkinEdit6.Text='' then
     begin
        self.bsSkinMessage1.MessageDlg('参数填写不完整!',mtcustom,[mbyes],0);
        result:=false;
     end
     else if self.bsSkinListBox1.Items.Count=0 then
     begin
        self.bsSkinMessage1.MessageDlg('参数填写不完整!',mtcustom,[mbyes],0);
        result:=false;
     end
     else if strtoint(self.bsSkinEdit1.Text)>2000 then
     begin
        self.bsSkinMessage1.MessageDlg('数据包大小设置不应超过2000!',mtcustom,[mbyes],0);
        result:=false;
     end
     else
        result:=true;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -