Frage zu TServer/ClientSocket
-
Die beiden Komponenten basieren ja auf dem TCP/IP Standard, muss ich als Programmierer bei einer Verbindung z.B. über das Internet dafür sorgen, dass die Datenpakete auch ankommen und nicht eventuell verloren gehen oder gar zerstümmelt werden oder regelt das schon das TCP/IP Protokoll im Hintergrund für mich? (Den Bericht über das erstellen eines eigenen Protokolles habe ich mir durchgelesen und ich weiß auch, dass Texte manchmal einfach aneinander gereiht werden).
Noch eine zweite Frage, die ein bisschen Offtopic ist:
Gibt es ein Programm mit dem man eine Internet- oder Netzwerkverbindung emulieren kann?? Ich kann die Programme zwar über den localhost(127.0.0.1) testen, aber das ist ja leider ein Idealfall, wo Pingzeiten und andere Vorkommnisse fast nie auftreten.Für jede Antwort bin ich dankbar.
-
Zur 1. Frage: TCP/IP regelt das für dich... oder besser gesagt... TCP regelt das für dich.
Die zweite Frage kann und will ich nicht beantworten... Stell diese Frage im Neuigkeitenforum nochmals und merke dir bitte für die Zukunft folgende Faustregel:
Pro Thread 1 Frage, pro Frage 1 Thread.
-junix
-
ZzetT schrieb:
Den Bericht über das erstellen eines eigenen Protokolles habe ich mir durchgelesen und ich weiß auch, dass Texte manchmal einfach aneinander gereiht werden
Dann sollte die Frage doch beantwortet sein. Für die Integrität der tatsächlichen Datenpakete sorgt TCP/IP, für die Integrität der "high level"-Daten (Texte, Binärdateien etc.) musst du mit einem eigenen Protokoll sorgen.
-
Das ich die Daten für das Versenden aufbereiten und für das Empfangen zerteilen muss habe ich verstanden. Es ging mir nur hauptsächlich darum, dass die dann auch alle korrekt ankommen. Es würde mir ja sonst nichts nützen, wenn ich die Länge des zu sendenen Textes voranstelle, dieser jedoch "falsche" Zeichen beinhaltet.
Aber wenn junix sagt, dass das TCP regelt, dann ist meine eigentliche Frage ja beantwortet.
-
ZzetT schrieb:
Das ich die Daten für das Versenden aufbereiten und für das Empfangen zerteilen muss habe ich verstanden.
Zerteilen musst du doch gar nix? der TCP/IP-Stack hackt das für dich in handliche Stückchen... Siehs als Stream... was du versendest, kommt am anderen Ende garantiert in der Reihenfolge wieder an...
-junix
-
Aus Erfahrung kann ich sagen, dass wenn ich mit der SendText-Funktion viele Daten verschicke, dann kommen die z.T. bei ReceiveText als eine Zeile an.
Beispiel:
Versende ich:
SendText("1")
SendText("2")
SendText("3")
SendText("4")Dann passiert es manchmal (nicht immer je nachdem wie die Verbindung ist), dass ich den String "1234" als einen bekomme und diesen muss ich dann erstmal zerteilen.
-
Ja, logisch, deshalb ja auch das Protokoll.... hat aber nix mit der TCP/IP Verbindung zu tun...
-
Gemeint ist z.B.
Client->SendText("3¡asd");
Suche jetzt nach dem ¡
bis dahin steht die Länge....
Wenn der String jetzt ankommt weißte vorher immer wie lang er ist....
Also ist es egal ob der Text zusammen ankommt oder zerteilt
-
äh du hast wohl übersehen, dass er den artikel zur protokollentwicklung schon gelesen hat?
-
Aber wohl die Thematik nicht verstanden...