2017-11-18 2 views
0

Meine Frage betrifft die Art und Weise, wie Daten behandelt werden, die über eine TCP-Verbindung empfangen werden. Tatsächlich wird durch das Herstellen einer TCP-Verbindung ein Stream erzeugt. Angenommen, ich möchte eine Nachricht senden, die einen Anfang und ein Ende hat. Da die Daten im Stream ohne Angabe von Grenzen fließen, kann ich den Anfang und das Ende einer Nachricht identifizieren. Ich habe mir gedacht, am Anfang und am Ende meiner Nachricht ein paar Sonderzeichen zu setzen, um sie zu erkennen, aber ich frage mich, ob es ein richtiger Weg ist. Meine Frage ist daher, wie kann ich richtig Grenzen für eine Nachricht für eine TCP-Verbindung einrichten? (Ich verwende Node.js für Client-Seite und Java für Server-Seite)Richtiger Weg zum Einrichten von Grenzen für eine TCP-Verbindung

danken Sie im Voraus

Antwort

0

Eine einfache TCP-Verbindung muss eine Art Protokoll, das das Datenformat definiert, so dass der Empfangsende weiß, wie man interpretiere, was gesendet wird. Zum Beispiel ist http ein solches Protokoll, webSocket ist ein anderes. Es gibt Tausende von bestehenden Protokollen. Ich schlage vor, dass Sie eine finden, die gut zu dem passt, was Sie tun und verwenden möchten, anstatt Ihre eigene zu bauen.

Verschiedene Protokolle verwenden unterschiedliche Schemata für die Definition des Datenformats und damit unterschiedliche Möglichkeiten, Teile Ihrer Daten abzugrenzen. Zum Beispiel in http, verwendet es \n, um Header zu skizzieren und dann xxxx: yyyy auf jeder Zeile zu verwenden und verwendet dann eine leere Zeile, um das Ende der Header abzugrenzen.

Andere Protokolle verwenden ein binäres Format, das Nachrichtenpakete mit einem Nachrichtentyp, einer Nachrichtenlänge und einer Nachrichtennutzlast definiert.

Es gibt buchstäblich Hunderte von verschiedenen Möglichkeiten, es zu tun. Da es so viele vorgefertigte Möglichkeiten gibt, kann man normalerweise ein existierendes Protokoll finden, das eine angemessene Übereinstimmung ist und einen vorgefertigten Server und einen Client für jedes Ende verwendet, anstatt einen eigenen Protokollerzeugungs- und -parsingcode zu schreiben.

+0

danke jfriend00 für Ihre Antwort. Ich habe einige Dokumente über bestehende Protokolle gelesen. Mein Ziel ist es, eine Messaging-App auf Android zu tun, aber es gibt eine Vielzahl von Protokollen und ich bin verwirrt darüber, welche zu wählen. Ich stelle fest, dass es Module wie socket.io gibt, mit denen man vorkonfigurierte Websocket-Server/Clients oder node-xmpp für das xmpp-Protokoll erstellen kann, aber ich weiß nicht, mit welchen man übereinstimmen würde. Sie haben sicherlich mehr Erfahrung in diesem Bereich als ich, also frage ich Sie, welche wäre die gute und eine gute Dokumentation zur Verfügung stellen, um es auf Client-Seite (Android/Java) und Server-Seite (Knoten) zu implementieren? – masterbate

+0

@masterbate - Nun, Sie haben Ihre Anforderungen überhaupt nicht beschrieben, aber für Messaging, wo Sie Nachrichten auf eine oder beide Arten senden möchten, und Sie möchten eine dauerhafte Verbindung zwischen den beiden Endpunkten aufrechterhalten, dann wäre socket.io ein guter Spiel. Darüber hinaus müssten Sie viel detailliertere Angaben zu dem machen, was Sie tun möchten. Es sind buchstäblich wahrscheinlich mehr als tausend Protokolle bereits definiert, daher ist es nicht so, dass jemand sie alle in einer Antwort hier beschreiben könnte. socket.io verfügt über vordefinierte Bibliotheken, um das Protokoll für Nodejs und Android zu implementieren. – jfriend00

+0

Meine Anforderung besteht darin, eine persistente Verbindung zwischen dem Client und dem Server herzustellen (keine p2p-Verbindung). Aber ich suchte nach detaillierteren Informationen und socket.io scheint das zu sein, wonach ich suche. Vielen Dank jfriend00 für das Teilen Ihrer Erfahrungen. – masterbate

Verwandte Themen