unit BundY; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, WSocket, StdCtrls, ExtCtrls, WinSock; type TForm1 = class(TForm) GroupBox1: TGroupBox; GroupBox2: TGroupBox; Label1: TLabel; Label2: TLabel; Editportl: TEdit; editportr: TEdit; editip: TEdit; Label3: TLabel; editstr: TEdit; Label4: TLabel; send: TButton; any: TCheckBox; Label5: TLabel; editportll: TEdit; listen: TButton; WSocket1: TWSocket; WSocket2: TWSocket; stop: TButton; clear: TButton; Panel1: TPanel; Label6: TLabel; Label7: TLabel; Label8: TLabel; Label9: TLabel; procedure sendClick(Sender: TObject); procedure anyClick(Sender: TObject); procedure EditportlChange(Sender: TObject); procedure editportrChange(Sender: TObject); procedure listenClick(Sender: TObject); procedure WSocket2DataAvailable(Sender: TObject; Error: Word); procedure stopClick(Sender: TObject); procedure WSocket2Error(Sender: TObject); procedure WSocket1Error(Sender: TObject); procedure WSocket2SessionConnected(Sender: TObject; Error: Word); procedure WSocket2SessionClosed(Sender: TObject; Error: Word); procedure clearClick(Sender: TObject); procedure Label7Click(Sender: TObject); procedure FormCreate(Sender: TObject); private FServerAddr : TInAddr; { Déclarations privées } public { Déclarations publiques } end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.sendClick(Sender: TObject); begin label6.caption := 'ready...'; wsocket1.proto := 'udp'; wsocket1.Addr := editip.text; wsocket1.LocalPort := editportl.text; wsocket1.Port := editportr.text; wsocket1.connect; wsocket1.SendStr(editstr.text); label6.caption := 'Sending UDP Datas to ' + editip.text ; wsocket1.close; end; procedure TForm1.anyClick(Sender: TObject); begin if any.checked then editportl.text := '0'; editportr.text := '0'; end; procedure TForm1.EditportlChange(Sender: TObject); begin any.checked := (editportl.text = '0'); end; procedure TForm1.editportrChange(Sender: TObject); begin any.checked := (editportr.text = '0'); end; function atoi(value : string) : Integer; var i : Integer; begin Result := 0; i := 1; while (i <= Length(Value)) and (Value[i] = ' ') do i := i + 1; while (i <= Length(Value)) and (Value[i] in ['0'..'9']) do begin Result := Result * 10 + ord(Value[i]) - ord('0'); i := i + 1; end; end; procedure TForm1.listenClick(Sender: TObject); begin wsocket2.proto := 'udp'; wsocket2.addr := '0.0.0.0'; wsocket2.port := editportll.text; wsocket2.listen; editportll.Enabled := false; listen.Enabled := false; end; procedure TForm1.WSocket2DataAvailable(Sender: TObject; Error: Word); var buffer : array [0..1023] of char; len : integer; src : tsockaddrin ; srclen : integer; begin srclen := sizeof(src); len := wsocket2.receivefrom(@buffer, sizeof(buffer), src, srclen); if len >=0 then begin if (FServerAddr.S_addr = INADDR_ANY) or (FServerAddr.S_addr = Src.Sin_addr.S_addr) then begin Buffer[Len] := #0; label8.caption := inttostr(atoi(label8.caption) + 1) + 'from> ' + strpas(inet_ntoa(src.sin_addr)) + ' of port> ' + inttostr(ntohs(src.sin_port)); label9.caption := 'Datas> ' + strpas(buffer); end; end; end; procedure TForm1.stopClick(Sender: TObject); begin stop.enabled := false; listen.enabled := true; editportll.Enabled := true; wsocket2.close; end; procedure TForm1.WSocket2Error(Sender: TObject); begin wsocket2.abort; end; procedure TForm1.WSocket1Error(Sender: TObject); begin wsocket1.abort; end; procedure TForm1.WSocket2SessionConnected(Sender: TObject; Error: Word); begin stop.enabled := true; listen.enabled := false; label8.caption := 'Connected'; end; procedure TForm1.WSocket2SessionClosed(Sender: TObject; Error: Word); begin stop.enabled := false; listen.enabled := true; editportll.Enabled := true; label8.caption := 'Disconnected'; end; procedure TForm1.clearClick(Sender: TObject); begin label8.caption := ' '; label9.caption := ' '; end; procedure TForm1.Label7Click(Sender: TObject); begin Application.MessageBox( 'BundY is an UDP tool... ' + #10 +#10 + 'send and listen UDP messages on the network in the same time ' + #10 +#10 + 'designed by Del_Armg0 - Magic¤°Software - July 1999 ' + #10 +#10 + 'this tool is freeware ' + #10 +#10 + 'Author can not be held liable for any damages arising from this software ' + #10 +#10 + 'contact me: Del_armg0@trojanslair.zzn.com ', '+--> About BundY - UDP tool ', MB_OK); end; procedure TForm1.FormCreate(Sender: TObject); begin sleep(1200); end; end.