Entwickler-Ecke

Internet / Netzwerk - Sockets: Zahlen statt langen Zeichenketten übertragen


Marco D. - Sa 28.01.06 00:15
Titel: Sockets: Zahlen statt langen Zeichenketten übertragen
Hallo!

Um die Netzwerkauslastugn zu senken, versende ich Zahlen über die Sockets anstatt von langen Zeichenketten (z.B. '1' statt 'reboot') Ist das bezüglich der Netzwerkauslastung vorteilhaft, da ja weniger Daten gesendet werden. Kann man die DAtengröße noch weiter reduzieren?


LLCoolDave - Sa 28.01.06 11:46

Mir stellt sich eher die Frage, in wiefern solch eine Änderung sinnvoll ist. Ich denke, heutzutage machen die 5 Zeichen unterschied wohl den Brei nicht mehr fett. Desweiteren ist 'reboot' viel verständlicher als '1', so dass du auch in 2 Tagen noch weisst, was der Code bezwecken soll. Spätestens bei 20 numerischen Befehlen wird sich ein chaos einstellen, dass wohl die paar eingespaarten Zeichen nicht wett macht.

Das ist zumindest meine Meinung.


Marco D. - Sa 28.01.06 11:56

Nun ja, in unserem Netzwerk (aus 18 PCs bestehend) werden schon mal große Datenmengen versendet. Da es zu keinem Stau kommt, dachte ich mir gehts es so besser. Auf den ersten Blick macht es keinen Unterschied, aber ich glaube, dass summiert sich.


UGrohne - So 29.01.06 00:19

OK, wenn wir jetzt mal von einer Leitung mit 100MBit ausgehen, dann bekomme wir (rein theoretisch, in der Praxis isses natürlich nicht so viel):

(100 * 1024 * 1024 / 8 ) Byte = 13.107.200 Byte

Das heißt, Du kannst rund 13Mio Zeichen pro Sekunde über die Leitung jagen (Protokolloverhead un physikalische Einschränkungen jetzt mal nicht eingerechnet).

Meinst Du da machen die 5 Zeichen noch was aus, die Du Dir bei Deinen Befehlen sparst? Oder wie oft willst Du die pro Sekunde verschicken?

Achja, und um die Leitung selbst brauchst Dir auch keine Sorgen machen, die wird keine Abnutzungserscheinungen bei größerer Datenmenge zeigen :mrgreen:


DarkHunter - So 29.01.06 12:03

Ich nutze für den Datenverkehr zwischen 2 Sockets immer 3stellige Commands, sprich dreisteillige Strings.
hat 2 Vorteile: Durch gleichbeliebende Länge sind sie einfacher auszuwerten
und
mit 3 Zeichen lassen sich doch schon recht sinnvolle Abkürzungen basteln die allemal übersichtlicher sind als eine Zahl


Marco D. - So 29.01.06 15:56

Ab und zu wird ja auch die Remote Control aktiviert und da versende ich fünf mal pro Sekunde ein 100 Kilobyte großes Bild. Die bildübertragung erfolgt verzögert. Und die Befehle für die Mausposition kommen auch nicht gleich an, wenn sie gesendet werden. Ich weiß nicht ob es an der Leitung liegt, aber Fakt ist, dass alles verzögert ist.


UGrohne - Mo 30.01.06 00:10

Gut 500kB pro Sekunde sind schon eine ganz anderes Größenordnung, das braucht natürlich ein Weilchen. Aber 100kB pro Bild sind schon recht viel, Du solltest mal ein wenig über Kompression der Bilder nachdenken.
Das hat Microsoft mit seinem Remote Desktop ziemlich gut hingekriegt, das läuft auch bei relativ langsam Leitung noch sehr gut. Soweit ich mir das denken kann, verschickt dieses RD nur sich ändernde Bereiche. Vielleicht wäre das auch eine Möglichkeit für Dich.


Horst_H - Mo 30.01.06 09:24

Hallo,

die Daten werden doch meist in Paketform a MTU-Byte (1500 meist) uebertragen.
Es lohnt sich also nicht, viele kleine Pakete zu senden.
Oder werden die Pakete vor dem versenden zusammengefasst?

Gruss Horst


Marco D. - Mo 30.01.06 17:22

user profile iconHorst_H hat folgendes geschrieben:

Oder werden die Pakete vor dem versenden zusammengefasst?
Gruss Horst


Da kann ich nichts zu sagen.

user profile iconUGrohne hat folgendes geschrieben:

Gut 500kB pro Sekunde sind schon eine ganz anderes Größenordnung, das braucht natürlich ein Weilchen. Aber 100kB pro Bild sind schon recht viel, Du solltest mal ein wenig über Kompression der Bilder nachdenken.
Das hat Microsoft mit seinem Remote Desktop ziemlich gut hingekriegt, das läuft auch bei relativ langsam Leitung noch sehr gut. Soweit ich mir das denken kann, verschickt dieses RD nur sich ändernde Bereiche. Vielleicht wäre das auch eine Möglichkeit für Dich.


Eine besssere Kompressions ist mir nicht bekannt. Ich habe die Funktion BmptoJpg benutzt, die sich im Easy Helper findet. Anfangs waren es sogar circa drei Megabyte!

Könnt ihr mir weiterhelfen, wie man das mit den sich ändernden Bereichen hinbekommt?