Einzelnen Beitrag anzeigen

Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#1

Client und Server in einem Prog - Code geht nicht

  Alt 12. Jun 2004, 15:22
Ich möchte ein programm schreiben, das normalerweise immer server ist, und auf knopfdruck kurz zum clienten wird, um eine deatei/meldung zu senden. Ich möchte also nicht wie bei einem herkömmlichen system einen clienten und einen server proggen, sondern beides in einem. Man gibt dann einfach die IP eines computers an, wird zum client und überträgt.

Es soll, wenn es fertig ist, ein programm zur übermittlung von daten im LAN werden, wo jeder jedem etwas senden kann. Es soll also keinen zentralen server geben und alles clients sondern eher wie ein P2P-Netz.

Hoffe, ich habe mich verständlich ausgedrückt. Hier ist der Code, Danke schonmal im voraus.

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, IdThreadMgr, IdThreadMgrDefault, IdTCPServer, IdBaseComponent,
  IdComponent, IdTCPConnection, IdTCPClient, StdCtrls;

type
  TForm1 = class(TForm)
    IdTCPClient1: TIdTCPClient;
    IdTCPServer1: TIdTCPServer;
    IdThreadMgrDefault1: TIdThreadMgrDefault;
    Button1: TButton;
    Edit1: TEdit;
    Label1: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure IdTCPServer1Execute(AThread: TIdPeerThread);
    procedure Edit1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  mess1, mess2: string;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
IdTCPServer1.Active := TRUE;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
IdTCPServer1.Active := FALSE;


if (Edit1.Text <> 'Bitte IP eingeben') then
begin
if (Edit1.Text <> '') then
begin
IdTCPClient1.Host := Edit1.Text;
IdTCPClient1.Port := 2222;
IdTCPClient1.Connect;

IdTCPClient1.Write('Hallo');
mess2 := IdTCPClient1.ReadLn();
showmessage (mess2);

IdTCPClient1.Disconnect;
end;
end;

IdTCPServer1.Active := TRUE;
end;

procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);
begin
mess1 := AThread.Connection.ReadLn();
showmessage (mess1);
AThread.Connection.Write('Hallo vom Server');
end;

procedure TForm1.Edit1Click(Sender: TObject);
begin
Edit1.Text := '';
end;

end.
  Mit Zitat antworten Zitat