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
codice:
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.
Lato Client
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.