Zum Inhalt springen

Sockets für einen Server


maddin

Empfohlene Beiträge

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.
Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

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...