COM/DCOM oder Sockets
-
Hallo,
ich habe mehrere Programme geschrieben (laufen auf einem oder auf verschiedenen Rechnern), die untereinander kommunizieren sollen (ein Hauptprogramm und mehrere Clients) und wollte dies eigentlich über COM bzw. DCOM lösen. Nun habe ich gelesen, daß man Programme, die auf dem gleichen Rechner laufen auch über Sockets verbinden kann. Das wäre eigentlich besser, da das ganze dann betriebssystemunabhängiger wäre.
Erste Frage: Wie muß ich diese Sockets parametrieren (IP und Port)? Ich bin bis jetzt davon ausgegangen, daß ein Port blockiert ist, wenn ein Programm diesen belegt, aber ich müßte doch das Server- und das Client-Programm mit dem gleichen Port belegen, oder?
Zweite Frage: Die Verbindung sollte möglichst echtzeitnah sein. Gibt es da Unterschiede zwischen COM und Socket? Was wäre da besser?Gruß,
buschke
-
Dieser Thread wurde von Moderator/in pumuckl aus dem Forum C++ in das Forum Rund um die Programmierung verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Hallo,
buschke schrieb:
daß man Programme, die auf dem gleichen Rechner laufen auch über Sockets verbinden kann. Das wäre eigentlich besser, da das ganze dann betriebssystemunabhängiger wäre.
So ist es, Sockets sind Plattformunabhängiger. Aber Sockets sind nicht der absolut schnellste Weg, auf jeder Plattform gibt es meist direktere/schnellere Kommunikationskanäle die aber nicht überall gleich sind. Wenn Du nicht das absolut letzte Quäntchen an Transferrate benötigst machst Du mit Sockets nichts falsch.
buschke schrieb:
Erste Frage: Wie muß ich diese Sockets parametrieren (IP und Port)?
Für den Server musst Du den Port angeben unter welchem er erreichbar ist, zusätzlich kann (nicht muss) man noch IP-Adressräume angeben von denen eingehende Verbindungen überhaupt akzeptiert werden sollen ansonsten darf jeder Rechner mit Deinem Server Kontakt aufnehmen (z.B. 127.0.0.1/8 wenn die Clients nur vom lokalen Rechner kommen dürfen, das ist keine echte Sicherheit aber macht Deinen Server nach außen schon mal ein klein wenig unsichtbarer). Bei den Clients musst Du nichts angeben (außer natürlich den Port Deines Servers zu dem der Client sich verbinden soll), wenn die eine Verbindung zum Server aufbauen sucht sich das Betriebssystem automatischen einen beliebigen freien Port raus.
buschke schrieb:
Ich bin bis jetzt davon ausgegangen, daß ein Port blockiert ist, wenn ein Programm diesen belegt,
Das stimmt auch, deshalb kannst Du immer nur einen Server pro Port auf einem Rechner betreiben.
buschke schrieb:
aber ich müßte doch das Server- und das Client-Programm mit dem gleichen Port belegen, oder?
Nein.
buschke schrieb:
Zweite Frage: Die Verbindung sollte möglichst echtzeitnah sein. Gibt es da Unterschiede zwischen COM und Socket? Was wäre da besser?
Die Latenzen dürften bei beiden recht klein sein, sicher deutlich unter einer Millisekunde. Ich kenne mich mit COM nicht aus aber ich glaube nicht das es spürbar schneller als Socket ist.
Überlege Dir mal welche Latenzen Du akzeptieren möchtest und um welche Datenmengen es sich handelt.
Wenn es immer nur ein paar Bytes sind die aber schnell übermittelt werden sollen muss man das dem TCP-Socket sagen da der per Default immer erst mal versucht ein TCP-Paket möglichst voll zu machen.Grüße
Erik