![]() |
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. |
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.
|
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. ![]() Und noch Indy9 vs Indy 10 ![]() |
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. |
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. |
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