AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Client/Server Konsolenapplikation - unauffindbarer Fehler
Thema durchsuchen
Ansicht
Themen-Optionen

Client/Server Konsolenapplikation - unauffindbarer Fehler

Offene Frage von "Andreas_S"
Ein Thema von Andreas_S · begonnen am 21. Aug 2008 · letzter Beitrag vom 22. Aug 2008
Antwort Antwort
Andreas_S

Registriert seit: 21. Aug 2008
Ort: Aachen
2 Beiträge
 
Turbo Delphi für Win32
 
#1

Client/Server Konsolenapplikation - unauffindbarer Fehler

  Alt 21. Aug 2008, 14:52
Hallo Leute!

Ich habe über 2 Stunden die Hilfe bemüht, bin aber nicht schlauer als vorher...

Aufgabenstellung: Eine Konsolenapplikation die per Parameter den Port (+ Host) übergeben bekommt. Je nach Parameter also Server bzw. Client ist.

Mein Server läuft brav, aber der Client bekommt keine Verbindung hin (anscheinend).
Über netstat -a sehe ich, dass auf dem Server-Port eine Anwendung abhört.


Vielleicht findet ja jemand den Fehler:
Code:
type
myServerSocket = class(TServerSocket)
public
  constructor Create;
  procedure ClientRead(Sender: TObject; Socket: TCustomWinSocket);
end;

procedure myServerSocket.ClientRead(Sender: TObject; Socket: TCustomWinSocket);
var
  s                : string;
begin
  s := Socket.ReceiveText;
  WriteLn('Server recieved: ' + s);
end;

[...]
// Auszug aus Main-Prozedur der Konsole

// Server
  if ActAsServer then
  begin
    try
      begin
        ServerSocket := TServerSocket.Create(nil);
        mSS := myServerSocket.Create;
        ServerSocket.Port := PortNumber;
        ServerSocket.OnClientRead := mSS.ClientRead;
        ServerSocket.Active := true;

        // Wait for connection
        while true do
        begin
          WriteLn(Format('Waiting for client to connect <Active %d>', [ord(ServerSocket.Active)]));
          if not ServerSocket.Active then
            ServerSocket.Active := true;
          Sleep(500);
        end;
      end;
    except on e: exception do
        WriteLn(Format('Server raised exception <%s>', [e.Message]));
    end;
    // Close connections
    if ServerSocket <> nil then
      ServerSocket.Active := false;
    FreeAndNil(ServerSocket);



// Client
  if ActAsClient then
    begin
      try
        begin
          ClientSocket := TClientSocket.Create(nil);
          ClientSocket.Port := PortNumber;
          ClientSocket.Host := ServerIP;
          ClientSocket.Active := true;
   
          // Send data
          while not Eof(txtFile) do
          begin
            ReadLn(txtFile, s);
              ClientSocket.Socket.SendText(s);
          end;
        end;
      except on e: Exception do
          WriteLn(Format('Client raised exception <%s>', [e.Message]));
      end;
      // Close connections
      if ClientSocket <> nil then
        ClientSocket.Active := false;
      FreeAndNil(ClientSocket);
    end;
Beim Debuggen habe ich festgestellt, dass ClientSocket.Active permanent 'false' ist.
Doch woran sollte das liegen? Ich komme leider einfach nicht weiter...


Grüße,
Andreas
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#2

Re: Client/Server Konsolenapplikation - unauffindbarer Fehle

  Alt 22. Aug 2008, 06:08
Da du alles von Hand instanzierst vermute ich mal, dass es sich um eine Konsolenanweundung handelt oder du kein TForm verwendest. Richtig?

In diesem Falle brauchst du eine eigene Nachrichteschleife mit GetMessage, TranslateMessage, DispatchMessage.

Gruß Zacherl
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Client/Server Konsolenapplikation - unauffindbarer Fehle

  Alt 22. Aug 2008, 07:14
Du könntest auch erst einmal probieren den Clienttype auf blockierend zu stellen. Das ist für eine Konsolenanwendung eher angebracht (wenn die Socketkomponenten das auch so implementieren wie ich vermute). Damit entfällt die Messagebehandlung und du kannst auch dein sleep rausschmeißen.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Benutzerbild von thkerkmann
thkerkmann

Registriert seit: 7. Jan 2006
Ort: Pulheim Brauweiler
464 Beiträge
 
Delphi 2010 Professional
 
#4

Re: Client/Server Konsolenapplikation - unauffindbarer Fehle

  Alt 22. Aug 2008, 08:09
Hi,

wieso instanziierst Du 2 Serversockets ?
Delphi-Quellcode:
        ServerSocket := TServerSocket.Create(nil);
        mSS := myServerSocket.Create;
dein mSS sollte doch reichen.... der ist doch von TServerSocket abgeleitet.

Gruss
Thomas Kerkmann
Ich hab noch einen Koffer in Borland.
http://thomaskerkmann.wordpress.com/
  Mit Zitat antworten Zitat
Andreas_S

Registriert seit: 21. Aug 2008
Ort: Aachen
2 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Client/Server Konsolenapplikation - unauffindbarer Fehle

  Alt 22. Aug 2008, 08:16
Danke für die Antworten!

Ich habe mich noch mehrere Stunden mit dem Problem beschäftigt und dann das ganze auf eine Form umgebaut. Funktioniert natürlich auf Anhieb...
Ich kapiers zwar nicht so genau, aber das Projekt ist zu klein um sich da zu lang Gedanken zu zu machen...

Dennoch danke für die Hilfe


Grüße
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: Client/Server Konsolenapplikation - unauffindbarer Fehle

  Alt 22. Aug 2008, 08:19
Zitat von Andreas_S:
Ich habe mich noch mehrere Stunden mit dem Problem beschäftigt und dann das ganze auf eine Form umgebaut. Funktioniert natürlich auf Anhieb...
Ich kapiers zwar nicht so genau, aber das Projekt ist zu klein um sich da zu lang Gedanken zu zu machen...
Könnte es sein das die Implementierung der Komponente ein Fensterhandle zur kommunikation benötigt und ohne Parent mit Fensterhandle einfach im Wald steht
Ähnliches Verhalten mit "geht nicht" kenne ich von TWebBrowser wemm man ihn nicht auf ein TForm legt und diese mit HandleNeeded mit gültigen Fensterhandle versorgt.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Antwort Antwort


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 17:48 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