Welche Möglichkeiten gibt es mehrere Computer zu verbinden?



  • Guten Abend,

    Mich interessiert im Moment wie ich Computer miteinander oder mit dem Internet verbinden kann.

    So weit ich weiß benutzt man meistens ein Netzwerkkabel, das gewöhnlich die RJ-45 Buchse als Schnittstelle nutzt. Jetzt weiß ich nicht wie ich diese manuell ansteuern kann. Ich fand bloß raus dass man Sockets benutzt um per HTTP mit einem Server zu kommunizieren.

    1. Kann man mit Sockets auch andere Protokolle benutzen um beispielsweise Daten mit einem Mikrocontroller auszutauschen (da wäre ein 'kleineres' Protokoll sinnvoll) oder um Daten für ein Onlinespiel zu übertragen (da wäre ein dafür optimiertes Protokoll sinnvoll) ?

    2. Ich hab davon noch keine Ahnung. Aber kann man auch ein eigenes Protokoll definieren und das zur Datenübertragung mit Sockets benutzen?

    Des weiteren könnte man ja theoretisch jede Schnittstelle (RS232, USB oder sogar den Audioausgang) benutzen um jegliche Daten auszutauschen, oder? Mein Freund meinte man könne sogar das Flackern der LED an der Festplatte nutzen 😃 .

    1. Lässt sich jede dieser Schnittstellen manuell ansteuern?

    Ich will nicht wissen wie das geht, sondern nur ob das geht. Von mir aus auch gerne mit Assembler!

    1. Oder lassen sich manche Schnittstellen nur mit vorhandenen Befehlen aus Bibliotheken wie winsock.dll ansteuern? Das müsste doch auch mit Assembler gehn, oder?

    Im Endeffekt würde ich gerne ein Programm schreiben mit dem ich eine HTTP-Request versenden kann und das Daten an einen anderen Computer schicken, bzw empfangen kann (auf mehrere Möglichkeiten). Erst mal in C++, aber später auch in Assembler auf dem Mikrocontroller.

    Ich weiß, das ist jetzt ein langer Text mit vielen Fragen. Ich hoffe dass ihr von dem Text nicht erschlagen werdet (vor allem hoffe ich dass ich nicht zu viel Blödsinn geschrieben hab ^^). Danke schon mal im Voraus für eure Antworten.

    MfG Tobi.



  • Tobi. schrieb:

    Guten Abend,

    Mich interessiert im Moment wie ich Computer miteinander oder mit dem Internet verbinden kann.

    So weit ich weiß benutzt man meistens ein Netzwerkkabel, das gewöhnlich die RJ-45 Buchse als Schnittstelle nutzt. Jetzt weiß ich nicht wie ich diese manuell ansteuern kann. Ich fand bloß raus dass man Sockets benutzt um per HTTP mit einem Server zu kommunizieren.

    1. Kann man mit Sockets auch andere Protokolle benutzen um beispielsweise Daten mit einem Mikrocontroller auszutauschen (da wäre ein 'kleineres' Protokoll sinnvoll) oder um Daten für ein Onlinespiel zu übertragen (da wäre ein dafür optimiertes Protokoll sinnvoll) ?

    2. Ich hab davon noch keine Ahnung. Aber kann man auch ein eigenes Protokoll definieren und das zur Datenübertragung mit Sockets benutzen?

    Des weiteren könnte man ja theoretisch jede Schnittstelle (RS232, USB oder sogar den Audioausgang) benutzen um jegliche Daten auszutauschen, oder? Mein Freund meinte man könne sogar das Flackern der LED an der Festplatte nutzen 😃 .

    1. Lässt sich jede dieser Schnittstellen manuell ansteuern?

    Ich will nicht wissen wie das geht, sondern nur ob das geht. Von mir aus auch gerne mit Assembler!

    1. Oder lassen sich manche Schnittstellen nur mit vorhandenen Befehlen aus Bibliotheken wie winsock.dll ansteuern? Das müsste doch auch mit Assembler gehn, oder?

    Im Endeffekt würde ich gerne ein Programm schreiben mit dem ich eine HTTP-Request versenden kann und das Daten an einen anderen Computer schicken, bzw empfangen kann (auf mehrere Möglichkeiten). Erst mal in C++, aber später auch in Assembler auf dem Mikrocontroller.

    Ich weiß, das ist jetzt ein langer Text mit vielen Fragen. Ich hoffe dass ihr von dem Text nicht erschlagen werdet (vor allem hoffe ich dass ich nicht zu viel Blödsinn geschrieben hab ^^). Danke schon mal im Voraus für eure Antworten.

    MfG Tobi.

    Ich habe von Mikrocontrollern usw. keine Ahnung, aber habe mich schon oft mit der Netzwerkprogrammierung beschäftigt.
    Selbstverständlich kann man sich über Sockets mit einem HTTP-Server verbinden und einen HTTP-Request abschicken.
    Selbiges gilt auch für FTP, IRC, etc. und alle anderen Protokolle die auf TCP/IP oder UDP aufbauen.

    Grundsätzlich lässt sich auf dieser Ebene auch ein eigenes Protokoll basteln.
    Was im einfachsten Fall z.B. so aussieht (in Anlehnung an HTML, sprich textbasiert):

    OK\r\n
    Length: 5\r\n
    \r\n
    Hallo
    

    Sofern dein Mikrocontroller also TCP/IP, UDP unterstützt, sollte das auch dort möglich sein. Falls dem nicht so ist, wird das nicht auf direkten Weg klappen.
    Stattdessen müsstest du dann über eine andere Schnitstelle gehen. Ich stelle mir das so vor:

    Mikrocontroller -> Anfrage (COM, USB) -> PC: Bearbeitung der Anfrage (Download einer Datei, o. ä.) -> PC: Antwort (COM, USB) -> Mikrocontroller

    Der PC dient also als Vermittler und stellt die fehlende TCP/IP Schnitstelle so zur Verfügung.



  • OK. Das wäre schon mal gut wenn ich Sockets dafür verwenden kann. Ich hätte da noch mal ein Verständnisfrage: Sockets sind soch nur Objekte, oder? Also ein Socket ist jetzt keine spezieller Hardwarebaustein der an der RJ45-Buchse vorliegt, sondern nur ein Stückchen Software, bzw Programmcode. Ich stelle mir das so vor:

    Man hat die Beispielbibliothek winsock.dll. Diese enthält eine Klasse Socket mit der ich ein Socket-Objekt erzeugen kann. Die Klasse enthält bestimmte Methoden, die das Bussystem so ansteuern, dass der Inhalt einer bestimmten Speicherzelle an die RJ45-Buchse übertragen wird, sodass es zum Empfänger geleitet werden kann. (Ich hoffe das stimmt. Ansonsten wäre ich natürlich sehr dankbar für die Beschreibenung der korrekten Funktionsweise).

    Wenn Sockets also Programm sind, müsste man diese doch selbst programmieren können. Natürlich werde ich erst mal Sockets verwenden. Aber im Endeffekt müsste man doch selbst die Befehle kompilieren können, die in der fertigen winsock.dll vorliegen (wenns auch in Assembler ist).

    Würde mich einfach interessieren ob das geht oder ob die Befehle die in winsock.dll stehen vom Anwender nicht im eigenen Programm ausgeführt werden können (was ich eigentlich nicht glaube).





  • Tobi. schrieb:

    Guten Abend,

    Mich interessiert im Moment wie ich Computer miteinander oder mit dem Internet verbinden kann.

    Was willst Du machen?
    Beschreibe das ganz konkret, alles andere ist total sinnlos, weil man Dir so keinen sinnvollen Rat geben kann.



  • Wenn ich mich recht erinnere. Brauchst du nicht unbedingt sowas heftiges wie TCP/IP für nen Mikrokontroller. Dieses Protokoll ist sehr Datensicher aber auch sehr overheadlastig.

    Prinzipiell kannst du das auch per UDP oder sogar mit einen komplett eigenen Protokoll steuern. Da wird aber dementsprechend die Implementation komplexer.

    Aber zur beschreibung eines Sockets:

    Ein Socket ist nicht mehr als eine IP-Adresse und ein Port auf denen Daten anliegen können (Irgendwas fehlt noch, soweit ich mich erinnere war ein Socket ein Tripel).

    Um den Socket wird meistens eine art Filedescriptor Objekt angelegt von den man dann daten lesen kann. Aber das ist dann wohl auch BS abhängig.



  • Dieser Thread wurde von Moderator/in Phoemuex aus dem Forum C++ in das Forum Themen rund um den PC verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Tobi. schrieb:

    So weit ich weiß benutzt man meistens ein Netzwerkkabel, das gewöhnlich die RJ-45 Buchse als Schnittstelle nutzt. Jetzt weiß ich nicht wie ich diese manuell ansteuern kann. Ich fand bloß raus dass man Sockets benutzt um per HTTP mit einem Server zu kommunizieren.

    Das OS abstrahiert mit seinen Treibern und TCP/IP Implementierung die ganze LowLevel Sachen, so daß du über Sockets aufs Netzwerk zugreifen kannst.

    Willst du den LowLevel Kram selber machen, dann wird es sehr kompliziert. Hier solltest du dich erstmal mit der Thematik Rechnernetze befassen.

    1. Kann man mit Sockets auch andere Protokolle benutzen um beispielsweise Daten mit einem Mikrocontroller auszutauschen (da wäre ein 'kleineres' Protokoll sinnvoll) oder um Daten für ein Onlinespiel zu übertragen (da wäre ein dafür optimiertes Protokoll sinnvoll) ?

    Schau dir mal das OSI Schichtenmodell auf der WP an, dann wird dir klar werden, daß die Gegenseite ebenfalls alle Schichten unterstützen muß, damit sie kommunizieren kann.
    In diesem Fall der Mikrocontroller.

    Des weiteren könnte man ja theoretisch jede Schnittstelle (RS232, USB oder sogar den Audioausgang) benutzen um jegliche Daten auszutauschen, oder?

    Ja, das könnte man.
    Es ist sogar möglich über SCSI Daten auszutauschen.
    Früher hat man das sogar gemacht, da Ethernet da noch zu langsam war.

    Mein Freund meinte man könne sogar das Flackern der LED an der Festplatte nutzen 😃 .

    Prinzipiell ist das richtig, aber nur zum Senden und auch nur dann, wenn einem das OS die Kontrolle darüber läßt, wann Daten von der Festplatte gelesen bzw. geschrieben werden.
    Denn nur so bringt man die Festplatte richtig zum Blinken.

    Zum Empfangen reicht die LED der Festplatte natürlich nicht, da bräuchtest du dann schon einen optischen Sensor.
    Wenn du die LED gegen eine IR LED austauscht, dann könntest du IRDA benutzen.

    1. Lässt sich jede dieser Schnittstellen manuell ansteuern?

    Wenn du dafür nen eigenen Treiber schreibst. Ja sicher.



  • Affenzahn schrieb:

    1. Lässt sich jede dieser Schnittstellen manuell ansteuern?

    Wenn du dafür nen eigenen Treiber schreibst. Ja sicher.

    Das hängt davon ab, was du unter "manuell" verstehst. Du wirst es auch mit einem eigenen Treiber nicht schaffen, mit einer Netwerkkarte ein Signal auszugeben, das kompatibel zur seriellen Schnittstelle ist. Wenn die Hardware dazu nicht in der Lage ist, kann ein Treiber nichts daran ändern.



  • Ok. Danke euch allen für eure Antworten, vor allem Affenzahn. Ihr habt mir wirklich geholfen. Jetzt hab ich auch ein paar Begriffe über die ich mich informieren kann um weiter zu kommen.

    Was willst Du machen?
    Beschreibe das ganz konkret, alles andere ist total sinnlos, weil man Dir so keinen sinnvollen Rat geben kann.

    Ja, es kann sein dass das nicht so klar wurde. Und um ehrlich zu sein hatte ich meine Meinung noch während des schreibens etwas geändert, weswegen die Frage wohl auch nicht mehr ganz in diesen Forumbereich passt.

    Ursprünglich wollte ich wissen welche Befehle ich brauche um mit Sockets eine Verbindung zu einem Server herzustellen. Ich wollte einen Bot programmieren, der mich beispielsweise automatisch im C++-Forum anmeldet wenn mein Computer startet.

    Das werde ich jetzt auch als erstes machen. Aber danach will ich ein wenig tiefer gehen und etwas experimentieren und auch mal einen Treiber programmieren (auch wenn ich davon überhaupt keine Ahnung habe ^^) und einen Mikrocontroller mit meinem Netzwerk verbinden.

    Also danke für die Anhaltspunkte und Erklärungen. Jetzt kann ich weiter machen, denn meine Fragen sind erst mal gelöst.



  • Christoph schrieb:

    Affenzahn schrieb:

    1. Lässt sich jede dieser Schnittstellen manuell ansteuern?

    Wenn du dafür nen eigenen Treiber schreibst. Ja sicher.

    Das hängt davon ab, was du unter "manuell" verstehst. Du wirst es auch mit einem eigenen Treiber nicht schaffen, mit einer Netwerkkarte ein Signal auszugeben, das kompatibel zur seriellen Schnittstelle ist. Wenn die Hardware dazu nicht in der Lage ist, kann ein Treiber nichts daran ändern.

    Ich gehe natürlich davon aus, daß die Schnittstellen dann auf beiden Seiten identisch sein müssen.

    SCSI + IRDA geht natürlich nicht.


Anmelden zum Antworten