AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Keine Verbindung mt TServerSocket
Thema durchsuchen
Ansicht
Themen-Optionen

Keine Verbindung mt TServerSocket

Ein Thema von SnuffMaster23 · begonnen am 26. Jul 2007 · letzter Beitrag vom 1. Aug 2007
Antwort Antwort
Benutzerbild von SnuffMaster23
SnuffMaster23

Registriert seit: 13. Feb 2006
Ort: Kempten
253 Beiträge
 
#1

Keine Verbindung mt TServerSocket

  Alt 26. Jul 2007, 22:29
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:
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.
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.

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
"Conspiracy is the poor man's mapping of the world" - Fredric Jameson
  Mit Zitat antworten Zitat
Benutzerbild von SnuffMaster23
SnuffMaster23

Registriert seit: 13. Feb 2006
Ort: Kempten
253 Beiträge
 
#2

Re: Keine Verbindung mt TServerSocket

  Alt 28. Jul 2007, 17:55
*push*

Keiner ne Idee was da los is?
Wenn ich den ServerSocket im Formdesigner einbaue funktioniert er, aber ich hab hier ja kein Form
"Conspiracy is the poor man's mapping of the world" - Fredric Jameson
  Mit Zitat antworten Zitat
Benutzerbild von SnuffMaster23
SnuffMaster23

Registriert seit: 13. Feb 2006
Ort: Kempten
253 Beiträge
 
#3

Re: Keine Verbindung mt TServerSocket

  Alt 1. Aug 2007, 01:40
Hm, ich nehm jetzt den Indy Server nachdem ich endlich rausgefunden hab dass man IdGlobal und IdIOHandler einbinden muss um TBytes zu verwenden
TIdTCPServer funktioniert nämlich in der Konsole. Warums TServerSocket nicht tut weiß ich nicht, ich vermut mal es liegt an WindowMessages.
"Conspiracy is the poor man's mapping of the world" - Fredric Jameson
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#4

Re: Keine Verbindung mt TServerSocket

  Alt 1. Aug 2007, 07:01
Zitat von SnuffMaster23:
Warums TServerSocket nicht tut weiß ich nicht, ich vermut mal es liegt an WindowMessages.
Nein, der funktioniert in der Console. Ich habe schon mehrere Konsolenanwendungen mit diesem geschrieben ohne Probleme.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Keine Verbindung mt TServerSocket

  Alt 1. Aug 2007, 07:38
[OT]
folgende beiden Zeilen sind gleichbedeutend. Du könntest also eine von beiden entfernen wenn du noch drauf aufbauen würdest:
Delphi-Quellcode:
TCPServer.Active := true;
TCPServer.Open;
[/OT]
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von SnuffMaster23
SnuffMaster23

Registriert seit: 13. Feb 2006
Ort: Kempten
253 Beiträge
 
#6

Re: Keine Verbindung mt TServerSocket

  Alt 1. Aug 2007, 12:40
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
Besonders spannend bei in Integers gecasteten Singles^^
[/ot]
"Conspiracy is the poor man's mapping of the world" - Fredric Jameson
  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 18:05 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