AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi TServerSocket will nicht :(
Thema durchsuchen
Ansicht
Themen-Optionen

TServerSocket will nicht :(

Ein Thema von uefsilencer · begonnen am 9. Jun 2003 · letzter Beitrag vom 9. Jun 2003
Antwort Antwort
uefsilencer

Registriert seit: 26. Mai 2003
6 Beiträge
 
#1

TServerSocket will nicht :(

  Alt 9. Jun 2003, 13:44
Hi Leute,

ich bekomme die TServerSocket-Komponente in einer Konsolen-Anwendung einfach nicht zum laufen. Auf INDY-Komponenten kann ich nicht wechseln da Indy nur synchrone Sockets benutzt, ich aber asynchrone Sockets brauche.

Hier mein Source:

Delphi-Quellcode:
Program Project2;

{$APPTYPE CONSOLE}

Uses
  SysUtils, ScktComp;

Type
  TMyApp = Class(TObject)
    Public
      Procedure Connect(Sender: TObject; Socket: TCustomWinSocket);
      Procedure Disconnect(Sender: TObject; Socket: TCustomWinSocket);
      Procedure Receive(Sender: TObject; Socket: TCustomWinSocket);
  End;

Var
  MyApp: TMyApp; Server: TServerSocket;

Procedure TMyApp.Connect(Sender: TObject; Socket: TCustomWinSocket); Begin WriteLn('Connected.') End;
Procedure TMyApp.Disconnect(Sender: TObject; Socket: TCustomWinSocket); Begin WriteLn('Disconnected.') End;
Procedure TMyApp.Receive(Sender: TObject; Socket: TCustomWinSocket); Begin WriteLn(Socket.ReceiveText) End;

Begin
  MyApp := TMyApp.Create;
  Server := TServerSocket.Create(nil);
  Server.OnClientConnect := MyApp.Connect;
  Server.OnClientDisconnect := MyApp.Disconnect;
  Server.OnClientRead := MyApp.Receive;
  Server.Port := 6000;
  Server.Active := True;
  While True Do ReadLn;
End.
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.412 Beiträge
 
Delphi 12 Athens
 
#2
  Alt 9. Jun 2003, 13:48
Deine Anwendung ist durch das "ReadLn" blockiert. Dadurch können eingehende Connects gar nicht beantwortet werden. Die Lösung ist als solche komplett unbrauchbar.

......
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
uefsilencer

Registriert seit: 26. Mai 2003
6 Beiträge
 
#3
  Alt 9. Jun 2003, 14:05
danke für die schnelle antwort. jetzt weiß ich zwar warum die komponente nicht auf connects usw reagiert, problem ist nur, wie ändere ich das? ich möchte sowohl auf socket-events eingehen, als auch auf benutzereingaben (readln) reagieren können. und das ganze möglichst ohne application.processmessages.
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.412 Beiträge
 
Delphi 12 Athens
 
#4
  Alt 9. Jun 2003, 17:14
Na ja, bei Console-Apps gibt es auch keine Application. Ich empfehle Dir entweder Dich mal mit Threads zu beschäftigen, oder aber mit nonVCL. Zu beidem findest Du gute Tuts bei Luckie.

www.luckie-online.de

......
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
uefsilencer

Registriert seit: 26. Mai 2003
6 Beiträge
 
#5
  Alt 9. Jun 2003, 17:58
mit threads komme ich gut zurecht. das problem ist, dass der server mal eben 1000, 2000 oder mehr verbindungen später halten muss. und für jede einzelne verbindung einen thread aufzumachen ist doch sehr unschön
  Mit Zitat antworten Zitat
magicshadow

Registriert seit: 28. Apr 2003
85 Beiträge
 
#6
  Alt 9. Jun 2003, 21:15
Also ich weiß nicht ob du das machen würdest, aber du könntest auf die ICS ausweichen (die WSocket componente unterstützt die methode processmessages, welche die Steuerung an das System abgibt und deine Anwendung also für Events frei macht.

Code:
while true do WSocket1.processmessages;
vieleicht hilfts ja.
  Mit Zitat antworten Zitat
uefsilencer

Registriert seit: 26. Mai 2003
6 Beiträge
 
#7
  Alt 9. Jun 2003, 23:39
ich glaube die ICS ist genau das was ich gesucht habe. vielen dank!
  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 03:50 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