Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hallo,

ich schreibe gerade einen Server, der sich u.a via SOAP ansprechen lässt. Ich habe dazu im Moment einen Thread geschrieben, der einen Socket erstellt, diesen an eine Adresse binden und auf Anfragen lauscht. Also:


1. while (true)

   1.1. Socket erstellen

   1.2. open

   1.3. bind

   1.4. listen

   1.5. accept

   1.6. read

   1.7. Anfrage bearbeiten

   1.8. socket schließen

Problem, wie man vielleicht erkennen kann ist, das der Thread lediglich eine Anfrage zur selben Zeit verarbeiten kann. Bei den Anfragen, die ich an den Server schicke, wird zuerst eine WSDL-Datei abgefragt, danach die SOAP Nachricht geschickt. Die beiden Anfragen werden so schnell nacheinander an den Server geschickt, dass dieser noch mit dem Schließen des Sockets beschäftigt ist und die zweite Anfrage nicht rechtzeitig bearbeiten kann. Die Lösung also: Ich muss mehrere Anfragen gleichzeitig bearbeiten können. Und darin liegt auch genau mein Problem - eigentlich keine Ahnung von der socket-Programmierung und somit auch kaum eine Idee für mein Problem.

Meine bisherige Idee war, dass ich einfach mehrere sockets erstelle, aber diese kann ich doch eigentlich nicht auf die gleiche Adresse binden - also auch nicht wirklich eine Lösung. Ich hoffe jemand von Euch kann mir einen entscheidenden Tipp geben.

Geschrieben
Meine bisherige Idee war, dass ich einfach mehrere sockets erstelle, aber diese kann ich doch eigentlich nicht auf die gleiche Adresse binden
Brauchst du auch nicht. Du kannst mit deinem Listen-Socket mehrmals accept aufrufen. Du brauchst die Schritte 1.1 bis 1.4 nur einmal auszuführen. Schritt 1.5 kommt in eine Schleife, und der Socket, den du bei accept bekommst, wird jeweils in einem eigenen Thread bearbeitet.
Geschrieben

Hallo,

aber man braucht doch für jeden Clienten einen eigenen Socket oder nicht?

was ist denn eigentlich der wesentlich unterschied zwischen Csockets und der winsock klasse?

ich möchte einen Server schreiben der meherer clients verwaltet. er soll auch einen reconnect ausführen falls die verbindung verloren geht!

den reconnect hatte ich gedacht in einem eigenen thread durchzuführen.

wenn der da "in" select wartet, kann der andere thread dann weiter mit den andern clienten kommunizieren?

mfg

Geschrieben

Also ich hatte vor ein paar Jahren mal einen Chatserver + Client geschrieben. Der Server hat auf einem bestimmten Port gelauscht auf dem sich der Client verbunden hat. Dann hat der Server dem Client einen freien Port geschickt und einen Thread gestartet der auf dem Port gelauscht hat. Der Client hat dann die Verbindung geschlossen und eine neue zu dem anderen Port geöffnet worüber dann die komplette weiter Kommunikation gelaufen ist.

Hat zwar gut funktioniert, aber ich denke nicht das das ein gute Lösung ist.

Geschrieben

ich weiß nicht so recht wie ich das jetzt realisieren soll..

jedem clienten einem eigenen thread zu geben gefällt mir irgendwie nicht..

mein server soll wenn er daten bekommt die auch zu jedem clienten möglichst "zeitgleich" senden. dann müßt ich ja die daten an jedem thread weitergeben... Wenn er keine daten bekommt soll er ein lifebit senden und empfangen um zu überprüfen ob der client noch aktiv ist.

also dacht ich das ich ne extra thread für den (re-) connect mach, aber wie übergibt man denn die sockets?

hab leider keine erfahrung von multithreading..

bitte für jede idee dankbar

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...