![]() |
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:
Client Programm:
// 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;
Delphi-Quellcode:
Server Programm:
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.
Delphi-Quellcode:
Gruß
program Console_TCP;
{$APPTYPE CONSOLE} uses SysUtils, ServerClass; var Server: TMyServerSocket; begin Server := TMyServerSocket.Create; Server.Port := 1234; Server.Initialize; readln; Server.Free; end. Neutral General |
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:
Im damit aufgerufenen Konstruktor erzeugst du es gleich nochmal als TClientSocket. :cyclops:
...
var Client: TMyClientSocket; begin Client := TMyClientSocket.Create; ...
Delphi-Quellcode:
Soll das alles so sein? Oder ist Client gar ein Feld innerhalb von TMyClientSocket?
constructor TMyClientSocket.Create;
begin inherited Create; Client := TClientSocket.Create(nil); end; :gruebel: |
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 |
Re: Konsolenanwendung -> Socket Probleme
Zitat:
Ich kann rar nicht bearbeiten. Kanst du das noch irgendwie anders ranhängen? |
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...
|
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 05:53 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz