AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi TServerSocket: Außerhalb von ClientRead senden
Thema durchsuchen
Ansicht
Themen-Optionen

TServerSocket: Außerhalb von ClientRead senden

Ein Thema von poker1337 · begonnen am 4. Mai 2008 · letzter Beitrag vom 5. Mai 2008
Antwort Antwort
poker1337

Registriert seit: 26. Apr 2007
8 Beiträge
 
#1

TServerSocket: Außerhalb von ClientRead senden

  Alt 4. Mai 2008, 21:08
Hallo!

Ich habe mich gerad "ein wenig" mit der TServerSocket Komponente befasst,
und bin dabei auf ein Problem gestoßen:

Ich habe einen Server und einen Client
Der Client sendet, wenn man auf einen Button drückt die Zahl "1" zum Server und der Server antwortet daraufhin mit "Socket.SendText(blabla)"

Soweit so gut, sendet der Client eine "2" soll der Server eine Prozedur starten die
sehr viele Buchstaben in eine Stringliste schreibt, dass funktioniert auch noch,
doch dann möchte ich bei JEDER 50. generierten Zeile in der Stringliste
die Daten die er bereits generiert hat an den Client zur weiteren Verarbeitung schicken,
dass löse ich wie folgt:
Delphi-Quellcode:
              if (results.Count = 50) then
                Begin
                 form1.Serversocket1.Active := true;
                   while z < 50 do
                     Begin
                      form1.ServerSocket1.Socket.SendText(results[z]);
                      z := z +1;
                     End;
Das Problem was sich hierbei ergibt ist leider für mich nicht leicht zu lösen:
"Windows Socket Fehler: Eine Anforderung zum Senden oder Empfangen von Daten wurde verhindert, da der Socket nicht verbunden istund (beim Senden über einen Datagrammsocket mit einem sendto-Aufruf) keine Adresse angegeben wurde (10057), bei API 'send'"

Weil ich denke doch das der Socket immer noch offen ist, warum kann ich dann nichts (von dort aus) schicken?
Wie kann ich also von dort aus Sachen verschicken?
oder: Wie sage ich der ServerSocket1ClienRead Prozedur, dass sie halt "form1.ServerSocket1.Socket.SendText(results[z]);"
schicken soll?


Ich habe dann noch eine Frage:
Wenn der Client, sagen wir mal, die Daten verarbeitet hat, wie teile ich dann dem Server mit das er weiter machen soll?


Vielen Dank schonmal,
poker
  Mit Zitat antworten Zitat
poker1337

Registriert seit: 26. Apr 2007
8 Beiträge
 
#2

Re: TServerSocket: Außerhalb von ClientRead senden

  Alt 5. Mai 2008, 14:12
*push* weiß keiner Rat? Ist mein Problem zu ungenau beschrieben oO
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#3

Re: TServerSocket: Außerhalb von ClientRead senden

  Alt 5. Mai 2008, 15:21
Mit der Suche hättest du dies Problem zu Hauf gefunden. Aber da du ganz faul bist und deine Strafzeit gewartet hast, hier nun die Antwort:

Ein Serversocket verwaltet mehrere Socketverbindungen zu den jeweilige Clients. Der ClientSocket hat nur einen Socket und kann nur eine Verbindung aufbauen (zu einem Serversocket).

Allein diese Aussage sollte bei dir nun die Frage ergeben: an welchen der vielen möglichen Clients sende ich meine Daten bei dem bisherigen Aufruf?

Antwort: an gar keinen. Die Socket Eigenschaft vom TServerSocket bietet dir die Eigenschaften Connections[] und ConnectionCount und darin findest du alle derzeit verbundenen Clients samt deren TCustomWinSocket Instanzen. Dort kannst du dir nun die oder den Client/Socket raussuchen und dann dort jeweils mit SendText(), etc arbeiten.
  Mit Zitat antworten Zitat
poker1337

Registriert seit: 26. Apr 2007
8 Beiträge
 
#4

Re: TServerSocket: Außerhalb von ClientRead senden

  Alt 5. Mai 2008, 16:49
Ok Danke Meister!
Ich benutze eigentlich immer die Suche nur diesmal hab ich nix gefunden,
naja nix für ungut danke trotzdem


Die zweite Frage allerdings ist noch offen
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#5

Re: TServerSocket: Außerhalb von ClientRead senden

  Alt 5. Mai 2008, 17:00
Zitat von poker1337:
Ich habe dann noch eine Frage:
Wenn der Client, sagen wir mal, die Daten verarbeitet hat, wie teile ich dann dem Server mit das er weiter machen soll?
Wozu? Der Server kann doch soviel schicken wie er will. Und der Client liest seine benötigten Informationen ein und verarbeitet diese, soweit er alle nötigen Informationen hat. Wenn er mit der Aufgabe fertig ist, kann er die nächsten Daten einlesen für die nächste Aufgabe.

Von daher verstehe ich die Frage nicht.

Aber ansonsten: Lass den Client einfach eine entsprechende Botschaft an den Server senden. Der Socket ist ja keine Einbahnstrasse...
  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 12:23 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