AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Client und Server in einem Prog - Code geht nicht
Thema durchsuchen
Ansicht
Themen-Optionen

Client und Server in einem Prog - Code geht nicht

Ein Thema von jfheins · begonnen am 12. Jun 2004 · letzter Beitrag vom 19. Aug 2005
Antwort Antwort
Seite 1 von 2  1 2      
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, 16: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
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.412 Beiträge
 
Delphi 12 Athens
 
#2

Re: Client und Server in einem Prog - Code geht nicht

  Alt 12. Jun 2004, 16:23
Zitat von jfheins:
Client und Server in einem Prog - Code geht nicht
Was genau geht nicht?

......
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
StefanDP

Registriert seit: 11. Apr 2004
294 Beiträge
 
#3

Re: Client und Server in einem Prog - Code geht nicht

  Alt 12. Jun 2004, 16:25
Delphi-Quellcode:
IdTCPClient1.Connect;

IdTCPClient1.Write('Hallo');
ist denn schon connected wenn du 'hallo' sagst?
gibt es da nicht irgendwo vom client ein OnConnected oder so?
  Mit Zitat antworten Zitat
Benutzerbild von vlees91
vlees91

Registriert seit: 19. Apr 2004
843 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Client und Server in einem Prog - Code geht nicht

  Alt 12. Jun 2004, 16:28
Client und Server in einem Programmen gehen:ich hab bei meinem Chatprog (Open Source) auch einen Client mit einem Server in einem programm gepackt (wegen den Nicknames, war einfacher)
vlees91
  Mit Zitat antworten Zitat
Benutzerbild von vlees91
vlees91

Registriert seit: 19. Apr 2004
843 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Client und Server in einem Prog - Code geht nicht

  Alt 12. Jun 2004, 16:29
Zitat von StefanDP:
gibt es da nicht irgendwo vom client ein OnConnected oder so?
gibt es
vlees91
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

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

Re: Client und Server in einem Prog - Code geht nicht

  Alt 12. Jun 2004, 16:48
@sakura: es kommt Error #10061 ("Connection refused")

@stefanDP: geht imnernoch nicht, trotzdem danke ...
  Mit Zitat antworten Zitat
Benutzerbild von vlees91
vlees91

Registriert seit: 19. Apr 2004
843 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Client und Server in einem Prog - Code geht nicht

  Alt 12. Jun 2004, 17:07
warum beendest du eigentlich, bevor du den client startest, den server?
wegen dem connection refused. warscheinlich will die firewall das nicht.
vlees91
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

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

Re: Client und Server in einem Prog - Code geht nicht

  Alt 12. Jun 2004, 22:51
hier der korekte Sourcecode:

Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    IdTCPClient1: TIdTCPClient;
    IdTCPServer1: TIdTCPServer;
    IdThreadMgrDefault1: TIdThreadMgrDefault;
    Button1: TButton;
    ComboBox1: TComboBox;
    IdAntiFreeze1: TIdAntiFreeze;
    Edit1: TEdit;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure IdTCPClient1Connected(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure IdTCPServer1Execute(AThread: TIdPeerThread);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  mess1, mess2: string;
  Binding : TIdSocketHandle;
 // CommBlock, NewCommBlock: TCommBlock;

implementation

{$R *.dfm}

function GetIp: string;
var phoste: PHostEnt;
  Buffer: array [0..100] of char;
  WSAData: TWSADATA;
begin
  result:='';
  if WSAStartup($0101, WSAData) <> 0 then exit;
  GetHostName(Buffer,Sizeof(Buffer));
  phoste:=GetHostByName(buffer);
  if phoste = nil then result:='127.0.0.1'
  else result:=StrPas(inet_ntoa(PInAddr(phoste^.h_addr_list^)^));
  WSACleanup;
end;



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

IdTCPServer1.Bindings.Clear;
Binding := IdTCPServer1.Bindings.Add;
Binding.IP := GetIP;
Binding.Port := 2222;

IdTCPServer1.Active := TRUE;
end;

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

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

IdTCPServer1.Active := TRUE;
end;

procedure TForm1.IdTCPClient1Connected(Sender: TObject);
begin
IdTCPClient1.WriteLn(Edit1.Text);
IdTCPClient1.Disconnect;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
IdTCPServer1.Active := FALSE;
IdTCPServer1.Destroy;
IdTCPClient1.Destroy;
end;

procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);
begin
showmessage (AThread.Connection.ReadLn());
end;

end.
  Mit Zitat antworten Zitat
Benutzerbild von DataCool
DataCool

Registriert seit: 10. Feb 2003
Ort: Lingen
909 Beiträge
 
Delphi 10.3 Rio
 
#9

Re: Client und Server in einem Prog - Code geht nicht

  Alt 19. Aug 2005, 01:38
Hi,

vollkommen klar, das das nicht geht !!!!

Im OnCreate setzt Du den Server active := true;

Im ButtonClick setzt Du den Server auf active := false; (d.h. keine verbindung möglich)

Dann versuchst Du den Client zu verbinden, obwohl Dein Server gar nicht läuft

Und wenn der Client nicht verbinden kann, weil der Server ja gar nicht an ist(Deshalb auch Connection refused), danach schaltest Du den Server wieder an

Der fehler und die Lösung sollten jetzt doch klar seien oder ?
Der Horizont vieler Menschen ist ein Kreis mit Radius Null, und das nennen sie ihren Standpunkt.
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

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

Re: Client und Server in einem Prog - Code geht nicht

  Alt 19. Aug 2005, 09:46
Abgesehen, davon, dass dieser Thread schon "etwas" älter ist:
Der Server, zu dem ich verbinden wollte, war nicht der, in dem selben Programm
==> Das Programm lief auch noch auf nem anderen PC, und da war der Server ja Aktiv ...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:26 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz