Visualizzazione dei risultati da 1 a 3 su 3

Discussione: Indy 10 & Delphi

  1. #1

    Indy 10 & Delphi

    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.

  2. #2
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    per poter ricevere dal client messaggi dels erver deve esserci una componente "server" anche nel client..

  3. #3
    oki thanks e per il resto? intendo .. x' nela rete locale funziona tutto mentre appena metto il mio indirizzo pubblico nell'host del client nn va più niente ..

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.