Netzwerkprogrammierung: 2 Server
-
Hi Leute ich hätte eine Frage bezüglich netzwerkprogrammierung:
Ich möchte einen TCP server erstellen, der auf 2 Ports hört.
Deshalb: Kann ich ein und den selben sockets an ZWEI ports binden?Wenn ja: Gibt es da was besonderes zu beachten?
Wenn nein gibts es ja nur die möglichkeit zwei getrennte sockets zu erstellen. Dann stellt sich für mich die frage, was geschickter ist: 2 Threads erstellen (je einer pro server) oder non-blocking server (hab gehört dass das nicht so der hammer ist)?
-
Deshalb: Kann ich ein und den selben sockets an ZWEI ports binden?
Nein.
-
Ein Socket ist (je nach Definition) die IP-Adresse + Port bzw beide IP-Adressen + beide Ports.
Bedeutet: anderer Port => anderer Socket
-
ok, was wäre dann am geeigentesten, um 2 server parallel zu betreiben?
Und ich hätte außerdem noch eine frage:
Wenn einer der Verbindungspartner den socket schließt, wird dann auch automatisch der des anderen partners geschlossen?
-
Was möchtest du eigendlich machen?
Die beiden Sockets sind ja getrennt und wenn der eine aus geht bleibt der andere an weil sie ja parallel von einander getrennt laufen.
-
Krauzi schrieb:
ok, was wäre dann am geeigentesten, um 2 server parallel zu betreiben?
Und ich hätte außerdem noch eine frage:
Wenn einer der Verbindungspartner den socket schließt, wird dann auch automatisch der des anderen partners geschlossen?Der andere bekommt das dann bei der nächsten Operation auf dieser Verbindung mitgeteilt (idR ein Fehlercode bei der recv/send/...-Funktion)
Aber so, wie das klingt, hast du nicht so wirklich die Ahnung?! Oo
Sag doch erst mal, was genau du vor hast und vll auf welchem Programmier-Niveau du dich befindest.bb
-
Krauzi schrieb:
ok, was wäre dann am geeigentesten, um 2 server parallel zu betreiben?
Und ich hätte außerdem noch eine frage:
Wenn einer der Verbindungspartner den socket schließt, wird dann auch automatisch der des anderen partners geschlossen?TCP ist ja verbindungsorientiert, d.h. wenn einer der beiden Partner die Kommunikation beendet, merkt der Kommunikationspartner das auch.
Und mit den 2 Ports auf einem Server: 2 Threads würden sich da natürlich anbieten, weil du dann schön separieren kannst (vll. fallen ja auch je nach Port unterschiedl. Aufgaben an) und aktiv auf jedem Port warten kannst. Finde ich die semantisch bessere Lösung, aber inwiefern das "besser" ist, kann ich nicht beurteilen.
-
Krauzi schrieb:
Dann stellt sich für mich die frage, was geschickter ist: 2 Threads erstellen (je einer pro server) oder non-blocking server (hab gehört dass das nicht so der hammer ist)?
Non-blocking nur in Kombination mit
selectoder Ähnlichem. Dazu kannst du dir auch mal Boost::ASIO ansehen.