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.