31. august 2001 - 02:15Der 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?
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?
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):
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...
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.
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 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.
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.
Synes godt om
Ny brugerNybegynder
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.