AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Consolen Server Problem

Consolen Server Problem

Ein Thema von fadz · begonnen am 9. Jan 2005 · letzter Beitrag vom 13. Jan 2005
Antwort Antwort
fadz

Registriert seit: 27. Nov 2004
41 Beiträge
 
#1

Consolen Server Problem

  Alt 9. Jan 2005, 19:33
Hier mal der Code:

Delphi-Quellcode:
program Project2;

{$APPTYPE CONSOLE}

uses
  SysUtils,
  ScktComp;

type
  test=class
public
  //socket: Tserversocket;
  procedure socketClientRead(Sender: TObject;
      Socket: TCustomWinSocket);
  procedure socketClientError(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure go;
    procedure SocketClientConnect;
end;

var socket: Tserversocket;
    e1,cmd: string;
    test1: test;

procedure test.socketClientError(Sender: TObject;
      Socket: TCustomWinSocket);
begin
writeLn('test');
end;

procedure test.socketClientRead(Sender: TObject;
      Socket: TCustomWinSocket);
var cmd: string;
begin
writeLn('GEHT DOCH');
cmd:=socket.ReceiveText;
writeLn(cmd);
//socket.free;
end;

procedure test.SocketClientConnect;
begin
writeLn('TEST');
end;

procedure test.go;
begin
socket:=tserversocket.Create(nil);
  writeLn('PleaseEnterPort');
  readln(e1);
// try
  //socket.Active:=false;
  socket.Port:=strtoint(e1);
  socket.ServerType:=stNonBlocking;
  socket.OnClientRead := socketClientRead;
  socket.OnClientConnect := SocketClientError;
  socket.OnClientDisconnect := SocketClientError;
  //
  socket.Open;
  socket.Active:=true;
// except
// socket.Free;
// end;
// readln;
end;


begin
  { TODO -oUser -cConsole Main : Hier Code einfügen }
   //readln;
   //test1.Create;
   test1.go;
   readln;
   test1.Destroy;
end.
nun meine frage,
warum empfange ich nichts ??
bzw. bekomme nicht mit wenn jemand connected ect.

thx für eure hilfe
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#2

Re: Consolen Server Problem

  Alt 9. Jan 2005, 22:28
Moin!

Vielleicht weil du die Klasse Test nirgendwo instanziierst? Wenn du das nicht machen willst, dann definiere die Proceduren für die Events und die anderen als Class Procedure. Wenn nicht musst du im anderen Falle vor dem test1.go Aufruf noch ein   test1 := test.Create; machen.

MfG
Muetze1
  Mit Zitat antworten Zitat
fadz

Registriert seit: 27. Nov 2004
41 Beiträge
 
#3

Re: Consolen Server Problem

  Alt 11. Jan 2005, 15:57
hab ich gemacht,
geht aber immer noch nicht,
was nun ?
  Mit Zitat antworten Zitat
r4id3n

Registriert seit: 11. Jan 2005
28 Beiträge
 
#4

Re: Consolen Server Problem

  Alt 11. Jan 2005, 16:04
//test1.Create;
^^ Ich hoffe du hast die Klasse nicht so erzeugt!!!!
test1:=test.create;
^^ So sollte das richtig sein!

test1.Destroy;
^^ Auch sowas macht man nicht!

test1.free;
^^ "Besser"
  Mit Zitat antworten Zitat
fadz

Registriert seit: 27. Nov 2004
41 Beiträge
 
#5

Re: Consolen Server Problem

  Alt 12. Jan 2005, 13:41
hab ich, aba es geht noch nicht, hier nochmals der aktuelle code:

Delphi-Quellcode:
program Project2;

{$APPTYPE CONSOLE}

uses
  SysUtils,
  ScktComp;

type
  test=class
public
  //socket: Tserversocket;
  procedure socketClientRead(Sender: TObject;
      Socket: TCustomWinSocket);
  procedure socketClientError(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure go;
    procedure SocketClientConnect;
end;

var socket: Tserversocket;
    e1,cmd: string;
    test1: test;

procedure test.socketClientError(Sender: TObject;
      Socket: TCustomWinSocket);
begin
writeLn('test');
end;

procedure test.socketClientRead(Sender: TObject;
      Socket: TCustomWinSocket);
var cmd: string;
begin
writeLn('GEHT DOCH');
cmd:=socket.ReceiveText;
writeLn(cmd);
//socket.free;
end;

procedure test.SocketClientConnect;
begin
writeLn('TEST');
end;

procedure test.go;
begin
socket:=tserversocket.Create(nil);
  writeLn('PleaseEnterPort');
  readln(e1);
// try
  //socket.Active:=false;
  socket.Port:=strtoint(e1);
  socket.ServerType:=stNonBlocking;
  socket.OnClientRead := socketClientRead;
  socket.OnClientConnect := SocketClientError;
  socket.OnClientDisconnect := SocketClientError;
  //
  socket.Open;
  socket.Active:=true;
// except
// socket.Free;
// end;
// readln;
end;


begin
  { TODO -oUser -cConsole Main : Hier Code einfügen }
   //readln;
   //test1.Create;
   test1:=test.Create;
   test1.go;
   readln;
   test1.free;
end.
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#6

Re: Consolen Server Problem

  Alt 12. Jan 2005, 23:00
Moin!

Er steht die ganze Zeit im ReadLn() und wartet auf Eingabe - daher: wie sollte da denn noch der TServerSocket zum Zuge kommen können ohne ein wenig Rechenzeit zu bekommen? Vor allem hast du eine Konsolenanwendung und daher hast du keinen VCL Thread der immer wieder die Steuerung bekommt bzw. auch mal den TServerSocket Thread ranlässt. Daher hast du eigentlich schlechte Chancen hier überhaupt mal einen CallBack zu erhaschen.

So sehe ich das... ... was meinen die anderen geneigten Leser dazu?

MfG
Muetze1

/EDIT: Rechtschreibfehler beseitigt
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

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

Re: Consolen Server Problem

  Alt 12. Jan 2005, 23:21
@Muetze: Genau so ist es.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
fadz

Registriert seit: 27. Nov 2004
41 Beiträge
 
#8

Re: Consolen Server Problem

  Alt 13. Jan 2005, 15:53
ok, gibts denn auch eine lösung für das problem ?

thx
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 15:33 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