Client/Server Application

smallbanner.jpeg (2611 bytes)

Sammen med Delphi får du mange komponenter. Under skal jeg vise hvordan man lager en enkel Server og en enkel Client med Delphi-komponentene ServerSocket og ClientSocket. Server-programmet som jeg skal forklare under har jeg faktisk programmert på oppdrag fra et Offshore firma som skulle bruke det ute i Nordsjøen. Jeg begynner nå ganske enkelt med....

Client - programmet

Jeg må bare advare om dette er et veldig veldig veldig enkelt Client-programm. Dropp to Label-komponenter, to Edit-bokser, en CheckBox, en ClientSocket (som du finner i "Internett" gruppen) og en statusbar på en ny form slik som dette:

client01.jpg (12056 bytes)

Dobbelklikk på CheckBox1 og skriv:

if CheckBox1.Checked = true then
begin
ClientSocket1.Active := true;
ClientSocket1.Host := Edit1.Text;
ClientSocket1.Port := StrToInt(Edit2.Text);
end
else ClientSocket1.Active := false;                            

Dette er egentlig alt du trenger å skrive, men som en bonus har jeg noen linjer til. Gå inn på Events på ClientSocket og dobbelklikk på "onConnect" og skriv:

StatusBar1.Panels[0].Text := 'Connected';

Og mens du først er i gang skriver du på "OnDisconnect":

StatusBar1.Panels[0].Text := 'Disconnected';

Det du nå har laget er et enkelt Client-programm, og når vi først er i gang hvorfor ikke lage...

Server-programmet

Det dette Server-programmet gjør er at når programmet får kontakt med en Client er at den sender en valgt fil til Clienten. Dropp de komponentene du ser nedenfor på en ny form. (Husk ListBox og ikke Memo. Ellers må du skrive om på noe av koden nedenfor.)

server01.jpg (13994 bytes)

I MainMenu1 lager du 3 "Items": "Open", "Listen" og "Exit". Klikk på "Listen" og skriv:

Listen1.Checked := not Listen1.Checked;
if Listen1.Checked then
begin
ServerSocket1.Active := True;
Statusbar1.Panels[0].Text := 'Listening...'
end
else
begin

if ServerSocket1.Active then
ServerSocket1.Active := False;
Statusbar1.Panels[0].Text := '';
end;

Det du når har skrevet gjør at når Listen er "Checked", så er ServerSocket1 aktiv og klar til å ta imot klienter.

Under "Type" nesten helt oppe i ".pas"-filen skriver du:

protected
IsServer: Boolean;

Og under "OnAccept" på "Events"-siden til ServerSocket-kompontet skriver du:

IsServer := True;
Statusbar1.Panels[1].Text :=
'Connected to: ' + Socket.RemoteAddress;

Under "OnClientConnect" skriver du:

ListBox1.Items.Add ('Connected: ' +
Socket.RemoteHost + ' (' +
Socket.RemoteAddress + ')' );
Statusbar1.Panels[0].Text := 'Connected';

Dette gjør at når Clienten får kontakt så registrerer programmet brukeren i ListBox'en.

Nå skal du ha inn noen Globale variabler slik at programmet kan variablene under alle prosedyrene (hvis nødvendig). Det du gjør er du skriver:

FileName : String;
strFile : String;

Under:

var
Form1: TForm1;

Lengre oppe i "Unit'en".

Klikk på "Open" i MainMenu og skriv:

with OpenDialog1 do
if execute then
begin
strFile := OpenDialog1.FileName;

 

 

smallbanner.jpeg (2611 bytes)