![]() |
Keine Verbindung mt TServerSocket
Moin, ich hab ein Problem mit dem TServerSocket und zwar krieg ich keine Verbindung zustande. Ich hab mir schon ein paar Tuts dazu durchgelesen, vor allem das von dsdt. Ich weiß nicht was da los ist, hier mal mein Code:
Delphi-Quellcode:
Eigentlich nix wildes, aber es wird nichtmal OnConnect aufgerufen. Wenn ich mit telnet drauf verbinden will maults zwar nicht dass keine Verbindung zustande kommt, aber wenn ich was schreib dann in Hintergrundfarbe und beim Server kommt nix an.
program Server;
{$APPTYPE CONSOLE} uses SysUtils, Windows, Messages, ScktComp; type TServer = class TCPServer: TServerSocket; private procedure OnRead(Sender: TObject; Socket: TCustomWinSocket); procedure OnConnect(Sender: TObject; Socket: TCustomWinSocket); public constructor Create; end; var mread: string; procedure TServer.OnRead(Sender: TObject; Socket: TCustomWinSocket); var Msg: string; begin Msg := Socket.ReceiveText; Writeln('>> ' + Msg); end; procedure TServer.OnConnect(Sender: TObject; Socket: TCustomWinSocket); begin Writeln('moin'); TCPServer.Socket.Accept(Socket.SocketHandle); end; constructor TServer.Create; begin TCPServer := TServerSocket.Create(nil); TCPServer.Port := 55555; TCPServer.ServerType := stThreadBlocking; TCPServer.OnClientRead := OnRead; TCPServer.OnClientConnect := OnConnect; TCPServer.Active := true; TCPServer.Open; end; begin with TServer.Create do try SetConsoleTitle('Pwnertool''s Server'); SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 12); Writeln('me is running...'#10); SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 7); Writeln('type `quit'' to quit - but dont tell anyone ;-)'#10); repeat // Application Mainloop Readln(mread); until mread = 'quit'; finally Free; end; end. Ich hab ja das Gefühl der Server lauscht zwar auf seinem Socket, macht dann aber keinen neuen für die eigentliche Verbindung auf. Ich bin echt mit meinem Latein am Ende, helft mir :) |
Re: Keine Verbindung mt TServerSocket
*push*
Keiner ne Idee was da los is? Wenn ich den ServerSocket im Formdesigner einbaue funktioniert er, aber ich hab hier ja kein Form :? |
Re: Keine Verbindung mt TServerSocket
Hm, ich nehm jetzt den Indy Server nachdem ich endlich rausgefunden hab dass man IdGlobal und IdIOHandler einbinden muss um TBytes zu verwenden :roll:
TIdTCPServer funktioniert nämlich in der Konsole. Warums TServerSocket nicht tut weiß ich nicht, ich vermut mal es liegt an WindowMessages. |
Re: Keine Verbindung mt TServerSocket
Zitat:
|
Re: Keine Verbindung mt TServerSocket
[OT]
folgende beiden Zeilen sind gleichbedeutend. Du könntest also eine von beiden entfernen wenn du noch drauf aufbauen würdest:
Delphi-Quellcode:
[/OT]
TCPServer.Active := true;
TCPServer.Open; |
Re: Keine Verbindung mt TServerSocket
Also das mit der Konsole hab ich extra ausprobiert, das "moin" von OnConnect hab ich nie zu Gesicht bekommen.
Und wenn ich mich recht entsinne hat .Active := true nichts gebracht, nur .Open. Die Zeile war noch vom rumprobieren da. Wenn ich den ServerSocket zum laufen bringen würde wäre ich aber auch dankbar, mit dem kann ich nämlich direkt Records verschicken ohne sie vorher in TBytes zu kopieren. Außerdem arbeitet er mit Events, da kann ich das ReadLn im "Mainloop" lassen. {ot] Ich find das eh witzig dass der Indy-Server Integers zum senden nicht in Big Endian umwandelt, der Client empfangene aber standardmäßig wieder zurückwandeln will :D Besonders spannend bei in Integers gecasteten Singles^^ [/ot] |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:45 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