Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Server: Socket-Fehler # 10054 (https://www.delphipraxis.net/100451-server-socket-fehler-10054-a.html)

busybyte 5. Apr 2008 16:17

Re: Server: Socket-Fehler # 10054
 
Nun es ist schon ca. 3 Jahre her, das ich einen http-Server mit den Indys gebastelt habe ,der aber heute noch funktioniert.
Folgender Effekt:
Innerhalber der Delphi-IDE werden alle Exceptions vom Debugger angezeigt und liessen sich auch nicht abschalten/abfangen.
Starte ich aber nur die Exe ausserhalb Delphi, gibt's,gab es keine Probleme und mir wurde erklärt das das völlig normal sei.

everdream 5. Apr 2008 16:33

Re: Server: Socket-Fehler # 10054
 
Dass der Debugger alle Exceptions anzeigt (auch z.B. bei try ... except Blöcken) hab ich auch schon rausgefunden, allerdings stürzt mein Programm auch ab, wenn ich die *.exe unabhängig von Delphi starte und dann ein Client ohne sich abzumelden beendet wird.

busybyte 5. Apr 2008 17:29

Re: Server: Socket-Fehler # 10054
 
Diese Demo ist ist absolut minimalistisch, aber funtioniert fehlerfrei, nachdem man in den ProjektDateieien (1*Client und 1* Server)
folgende Zeile deaktiviert hat,Du verwendest allerdings Indy9 solltest evtl. updaten. oder Context in PeerThread zurückbasteln.
Delphi-Quellcode:
begin
  Application.Initialize;
//  Application.MainFormOnTaskbar := True;              <--------- !!!
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.
Indy 10 TCP Server/Client Tutorial

Und noch Indy9 vs Indy 10
Indy 9/10

busybyte 5. Apr 2008 17:38

Re: Server: Socket-Fehler # 10054
 
Den Client noch etwas modifiziert.Wichtig ist das z.B. SendM zu TForm gehört ,sonst kann er nichts mit dem TCP.Client anfangen,aber die
Compilerfehlermeldung seht Ihr dann sofort.
Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    TCPClient: TIdTCPClient;
    Button1: TButton;
    Button2: TButton;
    Edit1: TEdit;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
  private
  Procedure SendM(S:String);
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

Procedure TForm1.SendM(S:String);
begin
  if TCPClient.Connected then
  begin
  TCPClient.IOHandler.WriteLn(S);
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  TCPClient.Connect;
  SendM('Dies ist eine Nachricht vom Clienten.');
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
TCPClient.Disconnect;
end;

procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
case Key of
vk_Return:SendM(Edit1.Text);
end;
end;

end.

busybyte 5. Apr 2008 17:50

Re: Server: Socket-Fehler # 10054
 
Ich werf den Server auch mal hier rein,ist aber nicht von mir,many thx 2 halinchen.
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdCustomTCPServer,
  IdTCPServer, idContext;

type
  TForm1 = class(TForm)
    TCPServer: TIdTCPServer;
    Memo1: TMemo;
    procedure TCPServerExecute(AContext: TIdContext);
    procedure TCPServerConnect(AContext: TIdContext);
    procedure TCPServerDisconnect(AContext: TIdContext);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.TCPServerConnect(AContext: TIdContext);
begin
  Memo1.Lines.Add('Verbindung: ' + AContext.Binding.PeerIP);
end;

procedure TForm1.TCPServerDisconnect(AContext: TIdContext);
begin
  Memo1.Lines.Add('Verbindungsabbruch: ' + AContext.Binding.PeerIP);
end;

procedure TForm1.TCPServerExecute(AContext: TIdContext);
begin
  Memo1.Lines.Add('Nachricht: ' + AContext.Connection.IOHandler.ReadLn);
end;

end.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:20 Uhr.
Seite 2 von 2     12   

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