Salve a tutti![]()
premetto che nn ho mai programmato applicazioni di tipo server/client... volevo sapere come bisogna utilizzare i componenti Indy 10 per scambiare informazioni tra due computer connessi ad internet.
Ho provato a creare un applicazione lato server con "IdTCPServer" ed una lato client con "IdTCPClient" e ragionando un pochino sn riuscito a mandare una stringa dal client al server :P il problema è che funziona solo da client verso server (mhh... questo perchè nn ho trovato un modo per mandare stringhe dal server al client) e inoltre funge solo nella rete locale...
please aiutatemi... ho letto nel forum e molti dicono di usare ICS.. cosa è ? c'è qlc guida online su come utilizzarla o meglio... c'è qlc guida sulla programmazione delphi per internet che riesca a chiarirmi le idee sul TCP/IP ?
Grazie
posto qui il prog che ho scritto ...:P
Lato Server
Lato Clientcodice:unit Chat_Server; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdCustomTCPServer, IdWhoIsServer, IdTCPServer, Mask, XPMan, ExtCtrls, IdIPWatch, IdIPAddrMon, IdContext ; type TServerChat = class(TForm) Attiva: TButton; Messaggi: TMemo; MioServer: TIdTCPServer; IPServer: TMaskEdit; PORTServer: TMaskEdit; Disattiva: TButton; StringDaMandare: TEdit; Invia: TButton; IPComputer: TEdit; Shape1: TShape; Timer1: TTimer; PORTA: TEdit; procedure AttivaClick(Sender: TObject); procedure DisattivaClick(Sender: TObject); procedure MioServerExecute(AContext: TIdContext); procedure Timer1Timer(Sender: TObject); procedure MioServerConnect(AContext: TIdContext); private { Private declarations } public { Public declarations } end; var ServerChat: TServerChat; implementation {$R *.dfm} procedure TServerChat.AttivaClick(Sender: TObject); var temp: Word; temp1: String; begin //Gestione dei pulsanti... Disattiva.Enabled := true; Attiva.Enabled := false; //Impostazioni del server //MioServer.Bindings.Add.IP := '87.15.100.227'; MioServer.Bindings.DefaultPort := StrToInt(PORTA.Text); //Attiva il server MioServer.Active := true; MioServer.StartListening; end; procedure TServerChat.DisattivaClick(Sender: TObject); begin //Disattiva il server MioServer.StopListening; MioServer.Active := false; //Gestione dei pulsanti... Disattiva.Enabled := false; Attiva.Enabled := true; //Resetta le porte del server MioServer.Bindings.Clear; end; procedure TServerChat.MioServerConnect(AContext: TIdContext); begin Messaggi.Lines.Add('Tentativo di connessione in corso...'); end; procedure TServerChat.MioServerExecute(AContext: TIdContext); var messaggioPrelevato : string; begin //leggo quello che ricevo... messaggioPrelevato := AContext.Connection.IOHandler.ReadLn; Messaggi.Lines.Add(messaggioPrelevato); end; procedure TServerChat.Timer1Timer(Sender: TObject); begin If (MioServer.Active = true) then Shape1.Brush.Color:=clGreen else Shape1.Brush.Color:=clRed; end; end.
codice:unit Chat_Client; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdCustomTCPServer, IdWhoIsServer, IdTCPServer, Mask, XPMan, ExtCtrls, IdIPWatch, IdIPAddrMon, IdTCPConnection, IdTCPClient; type TClientChat = class(TForm) Attiva: TButton; Messaggi: TMemo; IPHost: TMaskEdit; PORTHost: TMaskEdit; Disattiva: TButton; Invia: TButton; IPComputer: TEdit; MioClient: TIdTCPClient; StringaDaMandare: TMemo; PORTA: TEdit; procedure AttivaClick(Sender: TObject); procedure DisattivaClick(Sender: TObject); procedure InviaClick(Sender: TObject); procedure MioClientConnected(Sender: TObject); private { Private declarations } public { Public declarations } end; var ClientChat: TClientChat; implementation {$R *.dfm} procedure TClientChat.AttivaClick(Sender: TObject); var temp: Word; temp1: String; begin Disattiva.Enabled := true; Attiva.Enabled := false; //MioClient.Host := IPHost.ToString; //temp1 := PORTHost.ToString; //MioClient.Port := temp; MioClient.Host:= '192.168.0.2'; //IPHost.ToString; MioClient.Port := StrToInt(PORTA.Text); //StrToInt(PORTHost.Text); //Connessione al client MioClient.Connect; end; procedure TClientChat.DisattivaClick(Sender: TObject); begin MioClient.Disconnect; Disattiva.Enabled := false; Attiva.Enabled := true; end; procedure TClientChat.InviaClick(Sender: TObject); begin MioClient.IOHandler.WriteLn(StringaDaMandare.Text); end; procedure TClientChat.MioClientConnected(Sender: TObject); begin MioClient.IOHandler.WriteLn('Connessione Effettuat'); end; end.



Rispondi quotando