Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Konsolenanwendung -> Socket Probleme (https://www.delphipraxis.net/86402-konsolenanwendung-socket-probleme.html)

Neutral General 13. Feb 2007 17:25


Konsolenanwendung -> Socket Probleme
 
Hi,

Ich benutze grad die TServerSocket und TClientSocket Klassen. Habe hier ne Konsolenanwendung und das Problem ist folgendes: Es geht nicht :mrgreen:

Ne im ernst.. Irgendwie kriege ich keine Verbindung zu stande :gruebel:
Was is denn das Problem ? :|

Delphi-Quellcode:
// Server
constructor TMyServerSocket.Create;
begin
  inherited Create;
  Server := TServerSocket.Create(nil);
  Server.OnClientConnect := OnConnect;
  Server.ServerType := stNonBlocking;
end;

function TMyServerSocket.Initialize: Boolean;
begin
  Result := false;
  FInit := false;
  try
    Server.Open;
    FInit := true;
  except
    Result := FInit;
  end;
end;

procedure TMyServerSocket.OnConnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  Writeln(Socket.LocalAddress + ' connected!');
end;

// Client

constructor TMyClientSocket.Create;
begin
  inherited Create;
  Client := TClientSocket.Create(nil);
end;

function TMyClientSocket.Connect: Boolean;
begin
  Client.Open;
  Result := Connected;
end;
Client Programm:

Delphi-Quellcode:
program Console_TCP_Client;

{$APPTYPE CONSOLE}

uses
  SysUtils,
  ClientClass;

var Client: TMyClientSocket;

begin
  Client := TMyClientSocket.Create;
  Client.Host := '127.0.0.1';
  Client.Port := 1234;
 
  readln;
   Client.Connect;
   if Client.Connected then
    Writeln('Connected');
  readln;
end.
Server Programm:

Delphi-Quellcode:
program Console_TCP;

{$APPTYPE CONSOLE}

uses
  SysUtils, ServerClass;

var Server: TMyServerSocket;

begin
 Server := TMyServerSocket.Create;
 Server.Port := 1234;
 Server.Initialize;
 readln;
 Server.Free;
end.
Gruß
Neutral General

IngoD7 13. Feb 2007 22:39

Re: Konsolenanwendung -> Socket Probleme
 
Ich bin ziemlich müde und habe möglicherweise überhaupt nichts begriffen, aaaaber dennoch:

Im Client-Programm deklarierst du Client als TMyClientSocket und erzeugst es auch:
Delphi-Quellcode:
...
var Client: TMyClientSocket;

begin
  Client := TMyClientSocket.Create;
...
Im damit aufgerufenen Konstruktor erzeugst du es gleich nochmal als TClientSocket. :cyclops:
Delphi-Quellcode:
constructor TMyClientSocket.Create;
begin
  inherited Create;
  Client := TClientSocket.Create(nil);
end;
Soll das alles so sein? Oder ist Client gar ein Feld innerhalb von TMyClientSocket?
:gruebel:

Neutral General 14. Feb 2007 11:12

Re: Konsolenanwendung -> Socket Probleme
 
Liste der Anhänge anzeigen (Anzahl: 1)
Jo Client im Constructor is eine Private Variable von TMyClientSocket. TMyClientSocket = class(TObject)...Also Client im Programm <> Client in der Client-Unit :mrgreen:

Es wäre echt nett wenn sich das jemand mal angucken würde.. Ich häng einfach mal Server und Client dran.. Das kann ja alles nicht sein -.-

Gruß
Neutral General

IngoD7 14. Feb 2007 12:21

Re: Konsolenanwendung -> Socket Probleme
 
Zitat:

Zitat von Neutral General
Jo Client im Constructor is eine Private Variable von TMyClientSocket.

... deren Bezeichnung man einem ungeschriebenen Gesetz zufolge mit "F" beginnen lassen sollte. Aber das nur nebenbei.

Ich kann rar nicht bearbeiten. Kanst du das noch irgendwie anders ranhängen?

Neutral General 14. Feb 2007 12:26

Re: Konsolenanwendung -> Socket Probleme
 
Liste der Anhänge anzeigen (Anzahl: 1)
Jo klar kann ich.. Ja benenne die eigentlich auch immer mit F[Name] aber ka...

Muetze1 15. Feb 2007 21:07

Re: Konsolenanwendung -> Socket Probleme
 
Du kannst nicht einfach connect aufrufen und dann sofort eine Verbindung erwarten. Die Socket Komponenten laufen mit einem Thread im Hintergrund und von daher kehrt der Aufruf zu "connect" direkt und sofort wieder zurück und erst beim auslösen eines Ereignisses ist der Socket wirklich verbunden. Du musst die Ereignisse des Sockets nutzen...


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:30 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