URL: https://www.overclockers.at/coding-stuff/solved_c_datenpakete_gt1kb_senden_empfangen_73276/page_1 - zur Vollversion wechseln!
netzwerkspezialisten hergehört
folgendes problem:
es gibt ein programm zum versenden/empfangen von dateien über netzwerke.
lokal auf dem rechner läuft der transfer problemlos.
wenns aber darum geht, dateien über netze zu schicken, müssen diese erst auf 1kb große segmente gesplittet werden.
realisiert ist das ganze unter c#.
irgenwelche ideen?
und wie hast du es realisiert ? udp? oder mußt du auch aus anderen gründen auf die MTU im Ethernet rücksicht nehmen ? (zb weil die firewall/nat keine fragmentierung zulassen)
Interessant wäre auch was nicht geht. Kommen die Packete nicht an, oder fehlerhaft, ...
rofl - geile fragestellungZitat von Jedinetzwerkspezialisten hergehört
folgendes problem:
es gibt ein programm zum versenden/empfangen von dateien über netzwerke.
lokal auf dem rechner läuft der transfer problemlos.
wenns aber darum geht, dateien über netze zu schicken, müssen diese erst auf 1kb große segmente gesplittet werden.
realisiert ist das ganze unter c#.
irgenwelche ideen?
*arg*
das kommt dabei raus, wenn ma zuviel gleichzeitig macht
ok, nochmal und jetzt hoffentlich verständlicher:
senden von datenpaketen geht nur bis maximal 1kb, da sonst der empfänger eine invalid package-fehlermeldung (oder so in der richtung) bekommt. (bin grad ned am entsprechenden rechner).
leider sollen auch größere dateien (>1kb) geschickt werden können und das aufsplitten und zusammensetzen (am zielrechner) braucht unnötige rechenleistung.
merkwürdig an der ganzen sache ist, dass lokal (also sender und empfängerprog auf einem rechner) alles wunderbar geht. übers netzwerk gibts eben oben beschriebenes problem.
hatte schon wer a ähnliches problem oder eine ahnung, was das problem sein könnte?
und mit welchem protokoll verschickst du's?Zitat von Jedi*arg*
das kommt dabei raus, wenn ma zuviel gleichzeitig macht![]()
ok, nochmal und jetzt hoffentlich verständlicher:
senden von datenpaketen geht nur bis maximal 1kb, da sonst der empfänger eine invalid package-fehlermeldung (oder so in der richtung) bekommt. (bin grad ned am entsprechenden rechner).
leider sollen auch größere dateien (>1kb) geschickt werden können und das aufsplitten und zusammensetzen (am zielrechner) braucht unnötige rechenleistung.
merkwürdig an der ganzen sache ist, dass lokal (also sender und empfängerprog auf einem rechner) alles wunderbar geht. übers netzwerk gibts eben oben beschriebenes problem.
hatte schon wer a ähnliches problem oder eine ahnung, was das problem sein könnte?
http://www.ethereal.com/download.html
downloaden und nachschauen, was am traffic wirklich nicht hinhaut.
Zitat von Jedisenden von datenpaketen geht nur bis maximal 1kb, da sonst der empfänger eine invalid package-fehlermeldung (oder so in der richtung) bekommt. (bin grad ned am entsprechenden rechner).
leider sollen auch größere dateien (>1kb) geschickt werden können und das aufsplitten und zusammensetzen (am zielrechner) braucht unnötige rechenleistung.
merkwürdig an der ganzen sache ist, dass lokal (also sender und empfängerprog auf einem rechner) alles wunderbar geht. übers netzwerk gibts eben oben beschriebenes problem.
hatte schon wer a ähnliches problem oder eine ahnung, was das problem sein könnte?
bleibt die frage: warum nicht tcp? da brauchst du dich ums aufteilen, sequenzieren, bestätigen, zusammensetzen usw gar nicht mehr kümmern.
Zitat von FMFlashallerdings wirst du kein glück haben wenn du eine 1 mb große datei mit einem paket schicken willst, aus dem einfachen grund das die maximale paketgröße eines IP pakets 64kb beträgt.
bevor wir weiterspekulieren, sollte uns unser Jedi-Ritter mal über das verwendete Protokoll aufklären. (evt wäre auch ein code-stück interessant)
bei tcp braucht man sich zb überhaupt keine gedanken machen, bei udp nur über die maximale IP-datagram größe. zusätzliche constrains wie die Ethernet MTU kommen nur in bestimmten fällen hinzu. erst bei RAW-Sockets muß man große Rücksicht auf die Netzwerkinfrastruktur nehmen.
vielleicht ist es was vollkommen anderes ?
verschickt wird über sockets (tcp/ip)
wenn der server daten an client weiter leitet, bekommt der 1. client die daten korrekt, der 2. jedoch nicht ....
es dürfte jedoch am servercode liegen.
es wär schon toll, wenn zumindest 5kb segmente verschickt werden könnten, denn dadurch wär die performance schon mal einiges höher.
nachdem tcp-sockets stream orientiert sind, sollten blockgrößen eigentlich nicht von belang sein. der fehler ist also sehr wahrscheinlich in einem der beiden programme an den endpunkten der verbindung.
btw.. was meinst du mit 1ter & 2ter client?
ich nehme an er meint multiple verbindungen auf einem tcp socket
in dem bereich ist tcp imho nicht mehr sehr praktisch zu handhaben, da bevorzuge ich persönlich doch udp.
@atrox: es ist (leider) sehr wohl von belang wie groß die teilstücke des files sind die man auf einmal verschickt (fehlerhafter code?).
könntest du vielleicht code von einem selbst gebauten file transfer bei dem die teilgröße keine rolle spielt posten? dann wüsste ich wenigstens was ich damals falsch gemacht hab und das problem vom jedi würde sich vielleicht auch lösen
das hat er aber leider nicht erwähnt. ob die design-entscheidung vorteilhaft ist/war läßt sich ohne kenntnis des umfeldes nicht beurteilen.Zitat von FMFlashZitat von foKerVorschriftsschreiber?
für den socket ist es egal, das program muß es halt richtig auseinandernehmen bzw zusammensetzen, aber das hab ich eh schon geschrieben. bei tcp kann der sender die daten in blöcken zu n bytes übergeben, und der empfänger zu m bytes lesen, ohne daß irgendeine spezielle beziehung zwischen n und m herschen muß.Zitates ist (leider) sehr wohl von belang wie groß die teilstücke des files sind die man auf einmal verschickt (fehlerhafter code?).
overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025