source: trunk/Forms/UFormMain.pas

Last change on this file was 3, checked in by chronos, 8 years ago
  • Modified: Network address in each network interface should be full address not just single integer. Yet need to specify network subnets for routing.
File size: 2.9 KB
Line 
1unit UFormMain;
2
3{$mode delphi}{$H+}
4
5interface
6
7uses
8 Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls,
9 StdCtrls, UNetwork;
10
11type
12
13 { TFormMain }
14
15 TFormMain = class(TForm)
16 Memo1: TMemo;
17 PaintBox1: TPaintBox;
18 procedure FormCreate(Sender: TObject);
19 procedure FormDestroy(Sender: TObject);
20 procedure FormShow(Sender: TObject);
21 procedure PaintBox1Click(Sender: TObject);
22 procedure PaintBox1Paint(Sender: TObject);
23 private
24 procedure Log(Sender: TNetworkNode; Data: string);
25 public
26 Network: TNetwork;
27 end;
28
29var
30 FormMain: TFormMain;
31
32implementation
33
34{$R *.lfm}
35
36{ TFormMain }
37
38procedure TFormMain.FormCreate(Sender: TObject);
39begin
40 Network := TNetwork.Create;
41end;
42
43procedure TFormMain.FormDestroy(Sender: TObject);
44begin
45 Network.Free;
46end;
47
48procedure TFormMain.FormShow(Sender: TObject);
49var
50 NodeFranta: TNetworkHost;
51 NodeGeorge: TNetworkHost;
52 NodeHonza: TNetworkHost;
53 NodeJakub: TNetworkHost;
54 NodeMonika: TNetworkHost;
55 NodeRouter: TNetworkRouter;
56 NodeSwitch: TNetworkSwitch;
57 NodeSwitch2: TNetworkSwitch;
58begin
59 with Network do begin
60 NodeRouter := AddRouter('router', Point(400, 300), 2, Log);
61 NodeRouter.Interfaces[0].Address := NetworkAddress([1]);
62 NodeRouter.Interfaces[0].Network := 3;
63 NodeRouter.Interfaces[1].Address := NetworkAddress([8]);;
64 NodeRouter.Interfaces[1].Network := 4;
65 NodeSwitch := AddSwitch('switch', Point(200, 200), 4);
66 NodeSwitch2 := AddSwitch('switch2', Point(700, 200), 4);
67 NodeGeorge := AddHost('george', Point(100, 100), 1, Log);
68 NodeGeorge.Interfaces[0].Address := NetworkAddress([2]);;
69 NodeFranta := AddHost('franta', Point(200, 100), 1, Log);
70 NodeFranta.Interfaces[0].Address := NetworkAddress([3]);;
71 NodeHonza := AddHost('honza', Point(300, 100), 1, Log);
72 NodeHonza.Interfaces[0].Address := NetworkAddress([4]);;
73 NodeJakub := AddHost('jakub', Point(600, 100), 1, Log);
74 NodeJakub.Interfaces[0].Address := NetworkAddress([2]);;
75 NodeMonika := AddHost('monika', Point(700, 100), 1, Log);
76 NodeMonika.Interfaces[0].Address := NetworkAddress([3]);;
77
78 NodeFranta.Interfaces[0].Connect(NodeSwitch.Interfaces[1]);
79 NodeGeorge.Interfaces[0].Connect(NodeSwitch.Interfaces[0]);
80 NodeHonza.Interfaces[0].Connect(NodeSwitch.Interfaces[2]);
81
82 NodeSwitch.Interfaces[3].Connect(NodeRouter.Interfaces[0]);
83 NodeSwitch2.Interfaces[0].Connect(NodeRouter.Interfaces[1]);
84
85 NodeJakub.Interfaces[0].Connect(NodeSwitch2.Interfaces[1]);
86 NodeMonika.Interfaces[0].Connect(NodeSwitch2.Interfaces[2]);
87
88 NodeGeorge.Ping(NetworkAddress([1, 4]));
89 end;
90end;
91
92procedure TFormMain.PaintBox1Click(Sender: TObject);
93begin
94
95end;
96
97procedure TFormMain.PaintBox1Paint(Sender: TObject);
98begin
99 Network.Paint(PaintBox1.Canvas);
100end;
101
102procedure TFormMain.Log(Sender: TNetworkNode; Data: string);
103begin
104 Memo1.Lines.Add(Sender.Name + ': ' + Data);
105end;
106
107end.
108
Note: See TracBrowser for help on using the repository browser.