Client/Server Application
![]()
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:

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.)

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; |
![]()