Avatar billede wired Nybegynder
31. august 2001 - 02:15 Der er 16 kommentarer og
1 løsning

Kommunikation mellem to programmer

Hvordan får man to programmer på hver sin maskine forbundet via et netværk (tcp/ip) til at kommunikere med hinanden. Bare simpel data ala teksten \"tændt\"/\"slukket\". Begge programmet programmet i Delphi?

Wired.
Avatar billede ziron Nybegynder
31. august 2001 - 08:00 #1
der ligger et eksempel på en chat over bruger tcp/ip porten, efter man har kigget på det eksempel er det faktisk ikke særlig svært at lave små sjove ting over tcp/ip.

eksempelet ligger i din delphi mappe under:

...\\Demos\\Internet\\Chat

er det ikke lige nået så skriv hvad du skal bruge?

/ZIRON
Avatar billede lectoc Nybegynder
31. august 2001 - 08:04 #2
Det kan (og er der) skrives tykke bøger om!! Der er mange forskellige måder at kommunikere mellem to programmer på. For bare at nævne nogle få (der alle er tilgængelige i Delphi):

- CORBA.
- Midas.
- Sockets.
- SOAP (fra Delphi 6).
- HTTP.

osv. osv...

Mange af disse er svære at komme igang med. Og typisk kræves der en ekstra licens (= det koster penge!) at anvende kommunikationsformen. Det gælder fx. CORBA og Midas.

Men en kommunikations-type, der er let at anvende - og gratis er sockets (du skal dog have en Delphi Pro udgave!). På Internet fanebladet (D6), er der to komponenter: TServerSocket hhv. TClientSocket. I din server applikation tilføjer du først-nævnte og sætter den til at lytte på en bestemt port (en property).

Klienten tilføjes en TClientSocket, hvor Port sættes til det samme. Property Address sættes til IP-adressen på den maskine, der kører server-applikationen.

Følgende kode viser en ultra-simpel klient, der bare sender indholdet af et edit-felt til serveren:

procedure TForm2.LECButton1Click(Sender: TObject);
begin
  ClientSocket1.Open;
end;

procedure TForm2.LECButton2Click(Sender: TObject);
begin
  ClientSocket1.Close;
end;

procedure TForm2.LECButton3Click(Sender: TObject);
begin
  ClientSocket1.Socket.SendText(Edit1.Text);
end;

Følgende kode viser koden fra den tilsvarende simple server, der blot tilføjer den modtagne streng til et memo-felt:

procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  Memo1.Lines.Add(Socket.ReceiveText);
end;

Hvis ikke du har en professional udgave af Delphi, kan det dog stadig lade sig gøre. Så skal du blot til at grave dig ned i Windows\' API-et - og det er bestemt ikke let, hvis man ikke er vant til det...

/Torben.
Avatar billede martinlind Nybegynder
31. august 2001 - 09:18 #3
Eller en UDP client, den går ikke ned, eller hænger hvis den anden maskine er slukket
Avatar billede cms Nybegynder
31. august 2001 - 16:56 #4
de bedste, nemmeste, hurtigste, mest stabile og mest fleksible komponenter til tcp/ip jeg kender ligger i komponent-suiten Indy:
www.nevrona.com/indy/
Avatar billede easysoft_studios Nybegynder
31. august 2001 - 20:01 #5
eller den simple MailSlot. Giv mig din e-mail, så sender jeg dig en fuld demo - jeg har lavet :), plus komponenterne.
Avatar billede cms Nybegynder
01. september 2001 - 13:01 #6
Bruger du Martin Djernæs\' komponenter, eller er det nogle andre spændende?
Avatar billede easysoft_studios Nybegynder
01. september 2001 - 14:05 #7
jeg tror faktisk det er Martin Djernæs\' komponenter. Hvorfor?
Avatar billede cms Nybegynder
01. september 2001 - 15:12 #8
Dem har jeg selv (haft problemer med)... Så det kunne være du havde nogle bedre...
Avatar billede easysoft_studios Nybegynder
01. september 2001 - 18:46 #9
jeg har ikke oplevet nogle problemer, men det var også blot en simpel chat ting jeg lavede.
Avatar billede wired Nybegynder
02. september 2001 - 02:02 #10
Jeg har nu prøvet med Chat til D5. En på hver maskine. Men det virker stadig ikke. Det virker så simpelt at jeg ikke kan se fejlen.
Starter Chat op på hver maskine.
Den ene sættes til listen
Den anden vælges connect og IP-nummeret på den første maskine indtastes. Nu formoder jeg at jeg skulle kunne skrive noget og at det så skulle komme frem på den anden maskine, men det gør det ikke og efter et stykke tid få jeg en fejlmeddelelse. Wired.
Avatar billede wired Nybegynder
02. september 2001 - 02:03 #11
PS: Både Ziron og Lectoc\'s svar er tilfredsstillende men jeg vil bare gerne lige have det til at virke inden jeg giver point.
Avatar billede ziron Nybegynder
02. september 2001 - 04:31 #12
hvad lavere den af fejl??? kan du connecte eller er det før det den laver en fejl???

/ZIRON
Avatar billede wired Nybegynder
02. september 2001 - 10:20 #13
To linier oppe har jeg beskrevet forløbet.

Jeg tror jeg får en form for timeout.
Dvs. ingen connect.
Avatar billede martinlind Nybegynder
02. september 2001 - 11:04 #14
Har du prøvet at ping\'e mellem de to maskiner, det skal du kunne for at det virker :

ping <IP-adr>

/Martin
Avatar billede ziron Nybegynder
02. september 2001 - 11:24 #15
ja som marti skriver så skal der være forbindelse mellem dem og hvis du kører med en firewall skal du også sørge for at den ikke blokker den port du bruger?

/ZIRON
Avatar billede wired Nybegynder
02. september 2001 - 19:08 #16
Ziron det var faktisk min firewall der var med til fejlen og da du også var først, trods det at lectoc faktisk også havde et godt svar får du pointene. Jeg er dog villig til også at give lectoc 75 point hvis du læser dette lectoc finder vi lige en løsning.
Avatar billede lectoc Nybegynder
03. september 2001 - 09:35 #17
Selvfølgelig læser jeg det. Jeg følger da med i de debatter, jeg selv deltager i....

Du bestemmer selv, hvordan du fordeler pointene.

mvh.
Torben.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester