AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Konsole und TServerSocket.Create -> Fehler
Thema durchsuchen
Ansicht
Themen-Optionen

Konsole und TServerSocket.Create -> Fehler

Ein Thema von SebE · begonnen am 1. Jul 2005 · letzter Beitrag vom 10. Apr 2007
Antwort Antwort
SebE

Registriert seit: 31. Jul 2004
Ort: Chemnitz
316 Beiträge
 
Delphi 7 Personal
 
#1

Konsole und TServerSocket.Create -> Fehler

  Alt 1. Jul 2005, 20:03
Hallo,

ich wollte über eine Konsolenanwendung eine Socketverbindung herstellen (für ein Chatähnliches Programm).
hier ist erstmal der Code:

Delphi-Quellcode:
program MyChatServer;

{$APPTYPE CONSOLE}

uses
  SysUtils, ScktComp, Classes;

type
  TMainThread = class(TThread)
  public
    procedure Run;
  end;

  TServerThread = class(TThread)
    ServerSocket: TServerSocket;
    Port: Word;
    constructor Create;
    destructor Destroy;
    procedure OnServerAccept(Sender: TObject; Socket: TCustomWinSocket);
    procedure OnClientRead(Sender: TObject; Socket: TCustomWinSocket);
    procedure OnClientConnect(Sender: TObject; Socket: TCustomWinSocket);
    procedure OnClientDisconnect(Sender: TObject; Socket: TCustomWinSocket);
    procedure OnServerShutDown(SendText: String);
  end;

var
  MainThread: TMainThread;
  ServerThread: TServerThread;

const
  PVersion='1.01.05';
  PName='MyChatServer';

{Mainthread}

procedure TMainThread.Run;
begin
Write(#7);
ReadLn;
end;

{ServerThread}

constructor TServerThread.Create;
begin
ServerSocket.Create(nil); //Hier tritt der Fehler auf!
inherited Create(False);
end;

destructor TServerThread.Destroy;
begin
ServerSocket.Destroy;
inherited Destroy;
end;

...

{Program}

begin
ServerThread:=TServerThread.Create;

with ServerThread do
begin
ServerSocket.OnAccept:=ServerThread.OnServerAccept;
ServerSocket.OnClientConnect:=ServerThread.OnClientConnect;
ServerSocket.OnClientDisconnect:=ServerThread.OnClientDisconnect;
ServerSocket.OnClientRead:=ServerThread.OnClientRead;
end;

WriteLn('MyChatServer');
WriteLn;
Write('Port: ');
ReadLn(ServerThread.Port);

ServerThread.ServerSocket.Active:=False;
ServerThread.ServerSocket.Port:=ServerThread.Port;

try
ServerThread.ServerSocket.Active:=True;
except
ServerThread.ServerSocket.Active:=False;
WriteLn('ERROR!');
end;

WriteLn('Server is running.');
ReadLn;

ServerThread.Destroy;
end.
Das Programm will einfach nicht laufen, es kommt immer eine Zugriffsverletzung.

Kennt jmd das Problem oder habt ihr schon mal mit so etwas gearbeitet?

Danke.
Sebastian
  Mit Zitat antworten Zitat
Benutzerbild von x000x
x000x

Registriert seit: 21. Jan 2004
Ort: Bei Hamburg
308 Beiträge
 
Delphi XE2 Professional
 
#2

Re: Konsole und TServerSocket.Create -> Fehler

  Alt 1. Jul 2005, 21:15
Moin moin,

versuchs mal mit:
Delphi-Quellcode:
...

//ServerSocket.Create(nil); //Hier tritt der Fehler auf!
ServerSocket := TServerSocket.Create(nil);
...
Peter
-= Gruss Peter =-
-= alias x000x =-
  Mit Zitat antworten Zitat
SebE

Registriert seit: 31. Jul 2004
Ort: Chemnitz
316 Beiträge
 
Delphi 7 Personal
 
#3

Re: Konsole und TServerSocket.Create -> Fehler

  Alt 1. Jul 2005, 21:31
oh mein Gott.
Das ich da nicht von selbst drauf gekommen bin

Danke, hast natürlich recht.

Damit es funktioniert sieht mein Construktor so aus (für die, sie das gleiche Problem haben sollten):
Delphi-Quellcode:
constructor TServerThread.Create;
begin
inherited Create(True);
ServerSocket:=TServerSocket.Create(nil);
end;
Sebastian
  Mit Zitat antworten Zitat
Real_Thunder

Registriert seit: 25. Apr 2006
197 Beiträge
 
#4

Re: Konsole und TServerSocket.Create -> Fehler

  Alt 10. Apr 2007, 01:20
Habe hierzu mal eine Frage, ich versuche gerade ne serveranwendung über die console zu realisieren,
dazu habe ich mir den Source von oben mal kopiert, und die entsprechenen events eingesetzt wie z.b.

Delphi-Quellcode:
procedure TServerThread.OnClientConnect(Sender: TObject; Socket: TCustomWinSocket);
begin
writeln('Client hat verbunden');
Socket.SendText('Moin Moin');
end;

Wenn ich die Anwendung Starte, meckert meine Firewall auch brav rum, und ich erlaube dem Programm anschließend die Ports abzuhören.

Bei der Clientanwendung, meckert er gleich rum mit socketfehler, also das er keine Verbindung herstellen kann....

Ist der Serverthrad denn schon soweit das er die Verbindungen Annhemen kann ?...
Ich stehe echt auch dem Schlauch..

Für einen Schups in die richtige Richtung währe ich dankbar.

MfG Real Thunder
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Konsole und TServerSocket.Create -> Fehler

  Alt 10. Apr 2007, 07:02
Laß mal ein Portmonitor laufen, dann siehst du, ob der Port geöffnet wurde.
Markus Kinzler
  Mit Zitat antworten Zitat
Real_Thunder

Registriert seit: 25. Apr 2006
197 Beiträge
 
#6

Re: Konsole und TServerSocket.Create -> Fehler

  Alt 10. Apr 2007, 10:34
Ok, habe das Problem gelößt, da war noch ein portblocker (router firewall) zwichen...

Ich kann nun wunderbar verbinden.. Allerdings dann war es das auch schon....

auf die events reagiert der server überhaupt nicht..
weder auf onconnect noch auf onread etc etc.....
  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 02:43 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