sinnvolle übertragungs-größe im internet
-
hallo,
eine kurze frage. ich übertrage mit meinem programm binar dateien.
nun frage ich mich welche übertragungsgröße fürs internet sinnvoll wäre.also für die char-vari die übertragen wird...
und welche geschwindigkeiten wird man wohl erreichen können?
von pc zu pc mit einem eigenem "protokoll" - wenn mans so nennen kann
danke, Babelduo
-
kannst ruhig TCP nehmen. die übertragungsrate ist von der netzwerkkarte beschränkt. der rechner langweilt sich.
beim versuch, ein eigenes protokoll zu machen, müßte überlegen, daß du für verbindungsaufbau/abbau viele syscalls machen musst, die dein betriebssystem bei tcp innen machen kann mit ner geschwindigkeit, die du im userlevel gar nicht erreichen kannst. also versuch's nur, wenn du echte argumente hast, deutlich effektiver als tcp zu sein.
-
ok, ein bischen falsch verstanden
war aber meine schuld...ich möchte ein protokol auf TCP basierend machen.
im moment teste ich einfach nur mit dem senden von dateien herum.
der server liest eine datei aus, versendet sie über TCP zum clienten und er
schreibt die packete wiederum in eine datei.meine frage ist wie groß mein packet sein sollte damit ich im internet
eine gute übertragungsrate erreiche. also die anzahl der bytes die
pro packet gesendet werden sollen.und wie läuft das eigentlich genau mit dem upload und download.
server -> client wäre dann download für den client? aber upload für server
server <- client wäre dann upload für den client? aber download für server?das heisst doch das man nie "topspeed" von 120kb/s oder so erreichen kann wenn man nur mit
2 normalen DSL-Leitungen die einen upload von 20kb/s ?! oder so haben arbeitet.oder?
danke, Babelduo
-
babelduo schrieb:
meine frage ist wie groß mein packet sein sollte damit ich im internet
eine gute übertragungsrate erreiche. also die anzahl der bytes die
pro packet gesendet werden sollen.darauf hat dein programm kaum einfluss. das ist eine einstellung des tcp-stacks bzw. in den meisten fällen passt der die paketgrösse dynamisch an. bei dsl sind es etwa 1400 + ein paar zerquetschte bytes. bei 'ner langsamen modemverbindung weniger (512 oder so)
-
ja stimmt, ich habe mal geguckt welche größe meine packete haben -
und mein großes packet wird aufgeteilt!immer 1440
und dann der rest...also würde es keinen unterschied machen ob ich direkt 1440 sende oder 15000 oder so?
weil das eh alles gesplittet wird?Babelduo
-
babelduo schrieb:
also würde es keinen unterschied machen ob ich direkt 1440 sende oder 15000 oder so?
weil das eh alles gesplittet wird?genau. die schiebst einfach daten rein, wie in eine datei z.b. der tcp-stack macht sich die pakete schon selber.
-
babelduo schrieb:
und wie läuft das eigentlich genau mit dem upload und download.
server -> client wäre dann download für den client? aber upload für server
server <- client wäre dann upload für den client? aber download für server?Genau so isses.
Server und Client sind ja im Prinzip nur durch die Verbindungsrichtung der Sockets definiert, man kann ja schließlich in beide Richtungen senden.MfG RoaN;
-
roan312 schrieb:
Server und Client sind ja im Prinzip nur durch die Verbindungsrichtung der Sockets definiert, man kann ja schließlich in beide Richtungen senden.
wenn du's so siehst, dann....server ist immer der, der auf verbindungsanfragen lauscht (hat ständig einen socket im 'listen-state'). clients bauen aktiv eine verbindung auf.
-
also bringt es garnichts wenn ich meine char-variable z.b:
15000 groß mache? denn die pakete werden bei mir ja eh auf 1440
aufgeteilt. oder?das heisst die maximalgeschwindigkeit wird die uploadgrenze sein?
danke.
-
babelduo schrieb:
also bringt es garnichts wenn ich meine char-variable z.b:
15000 groß mache? denn die pakete werden bei mir ja eh auf 1440
aufgeteilt. oder?
danke.richtig.
andererseits bringt es aber was, einen kleinen puffer (egal, ob 200 oder 4000 bytes) zu machen, damit du nichjt für jedes einelne byte send() aufrufen musst. wie bei dateien halt auch.