AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Text von Server zum Client senden nur on Connect
Thema durchsuchen
Ansicht
Themen-Optionen

Text von Server zum Client senden nur on Connect

Ein Thema von blah · begonnen am 3. Sep 2004 · letzter Beitrag vom 4. Sep 2004
Antwort Antwort
blah

Registriert seit: 3. Sep 2004
Ort: Biel
32 Beiträge
 
Turbo Delphi für Win32
 
#1

Text von Server zum Client senden nur on Connect

  Alt 3. Sep 2004, 21:50
Hi zusammen,

ich steh da vor einem kleinen Problem, ich habe vor ein paar Tagen mit Delphi angefangen und möchte jetzt folgendes machen. Ich möchte wenn ein Client eine Telnet Verbindung zu meinem "Server" aufnimmt dass diesem einen Text gesendet wird und die Verbindung gleich dannach getrennt wird und am besten ein weiterer connect sagen wir mal für 300sec gesperrt (sich tot stellt) ist wäre luxus.

Ich habe bisher dies geschafft:
Delphi-Quellcode:
procedure TForm1.ServerSocket1ClientConnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  ServerSocket1.Socket.SendText('Hallo Dies ist ein test.');
  ServerSocket1.Socket.Close;
end;
ich gebe zu etwas lächerlich jedoch steht jeder mal am anfang und stellt für fortgeschrittene 'dumme' Fragen.

Ich wäre echt froh wenn jemand mir ein funktionierendes Beispiel zusenden/pasten könnte, klingt faul? Ist es aber nicht ich lerne am besten und schnellsten indem ich Code Samples studiere, syntax einpräge und rumprobiere.

ps: die suchen funktion brachte mir nicht viel leider.

--
Gruss blah
  Mit Zitat antworten Zitat
Benutzerbild von Aenogym
Aenogym

Registriert seit: 7. Mär 2004
Ort: Schwerin
1.089 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Text von Server zum Client senden nur on Connect

  Alt 3. Sep 2004, 22:04
hi und herzlich willkommen in der DP !

du kannst ja einen TTimer aufdein formular setzen und den intervall auf 300000 setzen (=300 sek.).
dann musst du irgendwo eine variable deklarieren, die entscheidet, ob der server sich tot stellt, oder nicht. im OnTimer-Event des Timers setzt du die variable dann auf false.
nun, im OnClientConnect-Event des TSocketServers schreibst du:

Delphi-Quellcode:
procedure TForm1.ServerSocket1ClientConnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  if dead := true then
    socket.close;
end;
damit wird eine gerade geöffnete verbindung sofort geschlossen, wenn dead = true.

alternativ könntest du auch einfach die eigenschaft active des SocketServers auf false setzen und der timer setzt diese iegenschaft nach 300 sek wieder auf true

edit: entferne in deinem obigen code das serversocket1. vor den statements, damit die socket-variable des events angesprochen wird (sprich: genau die verbindung, die das event auslöst)

Aenogym
Steffen Rieke
Was nicht buzzt, wird buzzend gemacht!
http://blog.base-records.de
http://www.base-records.de
  Mit Zitat antworten Zitat
blah

Registriert seit: 3. Sep 2004
Ort: Biel
32 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Text von Server zum Client senden nur on Connect

  Alt 3. Sep 2004, 22:54
Zitat von Aenogym:
hi und herzlich willkommen in der DP !
Danke
auch danke für die schnelle antwort.

Zitat von Aenogym:
du kannst ja einen TTimer aufdein formular setzen und den intervall auf 300000 setzen (=300 sek.).
dann musst du irgendwo eine variable deklarieren, die entscheidet, ob der server sich tot stellt, oder nicht. im OnTimer-Event des Timers setzt du die variable dann auf false.
nun, im OnClientConnect-Event des TSocketServers schreibst du:

Delphi-Quellcode:
procedure TForm1.ServerSocket1ClientConnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  if dead := true then
    socket.close;
end;
damit wird eine gerade geöffnete verbindung sofort geschlossen, wenn dead = true.

alternativ könntest du auch einfach die eigenschaft active des SocketServers auf false setzen und der timer setzt diese iegenschaft nach 300 sek wieder auf true
beide Idee'n sind gut jedoch gefallen mir beide nicht. Das beste wäre wenn er nur für den eine in dieser zeitspanne totermann spielen würde ala: ServerSocket1.Active := False; jedoch *nur* für diese eine IP z.B.

Zitat von Aenogym:
edit: entferne in deinem obigen code das serversocket1. vor den statements, damit die socket-variable des events angesprochen wird (sprich: genau die verbindung, die das event auslöst)
Danke dies war die Lösung.

Kleine frage wofür steht dieses 'T' meist davor z.B. TTimer?

--
Gruss blah
  Mit Zitat antworten Zitat
Benutzerbild von fiasko
fiasko

Registriert seit: 10. Dez 2002
Ort: Dresden
506 Beiträge
 
#4

Re: Text von Server zum Client senden nur on Connect

  Alt 3. Sep 2004, 23:21
Zitat von blah:
zeitspanne totermann spielen würde ala: ServerSocket1.Active := False; jedoch *nur* für diese eine IP z.B.
Du meinst für die Remote IP? Das geht nicht, dafür ist der TCP-Stack nicht ausgelegt - grundsätzlich werden alle Remote-IPs gleich behandelt.

Zitat von blah:
Kleine frage wofür steht dieses 'T' meist davor z.B. TTimer?
Es ist ein Name - also erstmal reine Willkür - aber ich würde es mal auf Typ tippen...
Thomas Liske
Posts comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
  Mit Zitat antworten Zitat
Benutzerbild von Aenogym
Aenogym

Registriert seit: 7. Mär 2004
Ort: Schwerin
1.089 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Text von Server zum Client senden nur on Connect

  Alt 4. Sep 2004, 11:24
Zitat von fiasko:
Das geht nicht, dafür ist der TCP-Stack nicht ausgelegt - grundsätzlich werden alle Remote-IPs gleich behandelt.
Genau. Man könnte aber jede remote-IP irgendwo abspeichern und bei jedem connect prüfen, ob die "tot-stell-zeit" für diese IP noch nicht abgelaufen ist.

Zitat von fiasko:
Es ist ein Name - also erstmal reine Willkür - aber ich würde es mal auf Typ tippen...
exakt. man könnte den auch "blahTimer" nennen. allerdings hat es sich durchgesetzt, dem namen des typ immer ein großes T voranzustellen. somit kann man schnell erkennen, ob der typ oder eine instanz des typs angesprochen wird, da der name einer instanz normalerweise ohne das große T anfangt.

Aenogym
Steffen Rieke
Was nicht buzzt, wird buzzend gemacht!
http://blog.base-records.de
http://www.base-records.de
  Mit Zitat antworten Zitat
blah

Registriert seit: 3. Sep 2004
Ort: Biel
32 Beiträge
 
Turbo Delphi für Win32
 
#6

[OT] Das mysteriöse T (was: [weggesnipt aus platz gründen])

  Alt 4. Sep 2004, 12:52
Zitat von Aenogym:
Zitat von fiasko:
Das geht nicht, dafür ist der TCP-Stack nicht ausgelegt - grundsätzlich werden alle Remote-IPs gleich behandelt.
Genau. Man könnte aber jede remote-IP irgendwo abspeichern und bei jedem connect prüfen, ob die "tot-stell-zeit" für diese IP noch nicht abgelaufen ist.
schade, denn da gäbe es in jedemfall immernoch ein disconnect und nicht ein "gar nicht erst connecten lassen"...

Zitat von Aenogym:
Zitat von fiasko:
Es ist ein Name - also erstmal reine Willkür - aber ich würde es mal auf Typ tippen...
exakt. man könnte den auch "blahTimer" nennen. allerdings hat es sich durchgesetzt, dem namen des typ immer ein großes T voranzustellen. somit kann man schnell erkennen, ob der typ oder eine instanz des typs angesprochen wird, da der name einer instanz normalerweise ohne das große T anfangt.
Danke, euch beiden.
Ich versuche es zusammen zufassen bitte korrigiert mich wenn ich flasch liege:
Also man nennt einen Typ eigentlich nur zum besseren erkennen TTimer und wird mit diesem gestartet aber angesprochen im 'Programm' wird er nur noch mit Timer (Timer ist nur ein stellvertretendes Beispiel).

ps: dies würde heissen ich bin auf der suche nach einem Typ und nicht nach einem addon für SmartCard (TSmartCard)

TIA
Gruss blah
Signatur? Kann man das essen?
  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 16:45 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