Datei versenden
Übersicht

m a j o rBetreff: Datei versenden |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Soooo, war mir nicht sicher ob ich das Ganze hier oder direkt zu BNetEx schreiben soll, dass Problem is vllt allgemein...
Es sieht folgendermaßen aus: Ich komm sonst meistens immer klar, auch wenn es um Netzwerk geht. Ich benutzte BNetEx und jetzt ging es darum einen Server zu erstellen, der eine Datei versendet. Geht bis dahin alles wunderbar, multiple clients, kein Problem(nur wenn ich das ganze Threade wirds n bisschen unsicher sobald jemand mutwillig 100 verbindungen auf einmal aufbaut und während einer Datenübertragung abbricht ^^). Mein Problem ist jetzt mehr allgemeiner Natur: Ich will zB. dass der User angegeben kann: Upstream: 100 kb/s Nun weiß ich nicht wie ich das realisieren soll. Meine 1. Idee war, die 100 kb/s durch die Anzahl der laufenden Dateiübertragungen zu teilen und dementsprechen x kb/s pro client auszugeben... Bis dahin geht alles noch toll ![]() Jetz weiß ich nicht wie ich das Ganze messen soll. Eine Idee, bei der mir ziemlich unwohl war, war alle Clients mit den xk Byte zu füttern, und bis zur nächsten Fütterung 1s (edit: 1000s wären wohl zu lange lol) zu warten(aber ohne das Prog mit Delay anzuhalten). Geht bis hierhin auch noch, is aber wohl nich ideal. Und kritisch wird es auch schon, wenn ein User verbunden ist und eine 6mbyte Datei zieht. Upstream z.b. 500 kb/s, also versucht mein Prog dem einen Client 500kb per stream.writebyte() reinzuschreiben und dann per stream.sendmsg() zu senden.... Nur leider hängt sich mein Prog dabei (fast) auf. so.. ^^ Meine Frage nun... Wie zum Teufel stellt man so was überhaupt an? Wie groß macht man diese Pakete? Ich wäre auch nicht überrascht, wenn ich das Ganze hier komplett falsch angepackt hätte... Nunja, schonmal Danke für die Antworten ![]() |
||
![]() |
Vertex |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also mal für ein Client dargestellt:
Code: [AUSKLAPPEN] Start = Millisecs()
Count = 0 Repeat Count :+ Client.SendMsg() If Millisecs() - Start < 999 Then If Count > 100 KB Then Aufhören EndIf Forever Ist nur Pseudocode. In Worte gefasst: Du misst für jeden Client, wieviel KB er innerhalb einer Sekunde gesandet bekommen hat. Überschreitet das die gewollten 100 KB z. B. in dieser Sekunde hörst du auf zu senden, und beginnst erst in der nächsten Sekunde weiter zu senden. mfg olli |
||
vertex.dreamfall.at | GitHub |
m a j o r |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hmm so ähnlich habe ich es jetzt schon.
Was mich vor allem beschäftigt: Wie viele Bytes soll ich in den Sendebuffer schreiben, eh ich SendMsg() ausführe? Denn da liegt ja im Grunde mein Problem, da mein Prog bei einem hohem Upstream große Datenmengen in den Buffer schreibt, versucht zu senden, und sich aufhängt. |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group