Netzwerkübertragung zu langsam

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Firstdeathmaker

Betreff: Netzwerkübertragung zu langsam

BeitragSo, März 20, 2005 16:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Hai,

Ich hab da ein Problem:
Ich möchte Dateien über ein Netzwerk versenden. Aber irgentwie dauert das so ziemlich ewig. Wie bekomme ich das schneller hin?


Server
BlitzBasic: [AUSKLAPPEN]
Global NET_SEND_STREAM=CreateUDPStream(8001)
Global NET_RECEIVE_STREAM=CreateUDPStream(8000)
SetBuffer BackBuffer()
Dateipfad$=\"2 Pac - Changes.mp3\"
paketsize=7000


Repeat

IP=0
Repeat
IP=RecvUDPMsg(NET_RECEIVE_STREAM)
PORT=UDPMsgPort(NET_RECEIVE_STREAM)
Until IP Or KeyHit(1)
versendet=0

If IP<>0 And ReadByte(NET_RECEIVE_STREAM)

dateistream=ReadFile(Dateipfad)
groesse=FileSize(Dateipfad)

WriteLine NET_SEND_STREAM,Dateipfad
WriteInt NET_SEND_STREAM,paketsize
WriteInt NET_SEND_STREAM,groesse


SendUDPMsg NET_SEND_STREAM,IP,PORT-1



While Eof(dateistream)=0
Cls
Text 10,10,\"Sende Pakete: \"+versendet+\"/\"+Ceil(groesse/paketsize)
Flip 0
For i=1 To paketsize
byte=ReadByte(dateistream)
WriteByte NET_SEND_STREAM,byte

Next

SendUDPMsg NET_SEND_STREAM,IP,PORT-1
versendet=versendet+1

Repeat;Warten auf Empfangsbestätigung
Until RecvUDPMsg(NET_RECEIVE_STREAM)
ReadByte (NET_RECEIVE_STREAM)

Wend
Cls
Text 10,10, \"Datei versendet an: \"+DottedIP(IP)+\":\"+(Port-1)
Flip
CloseFile dateistream
EndIf

Until IP=0
End


Client
BlitzBasic: [AUSKLAPPEN]
Global NET_SEND_STREAM=CreateUDPStream(5001)
Global NET_RECEIVE_STREAM=CreateUDPStream(5000)
SetBuffer BackBuffer()

WriteByte NET_SEND_STREAM,1
SendUDPMsg NET_SEND_STREAM,INT_IP(\"127.0.0.1\"),8000


Repeat
IP=RecvUDPMsg(NET_RECEIVE_STREAM)
Until IP Or KeyHit(1)
dateiname$=ReadLine(NET_RECEIVE_STREAM)
Print dateiname
stream=WriteFile(dateiname)
paketsize=ReadInt(NET_RECEIVE_STREAM)
groesse=ReadInt(NET_RECEIVE_STREAM)
pakete=Ceil(groesse/paketsize)
angekommen=0

Repeat
zsIP=RecvUDPMsg(NET_RECEIVE_STREAM)
If zsIP=IP


If angekommen+1=pakete Paketsize=groesse-(angekommen*paketsize)
For i=1 To Paketsize
WriteByte stream,(ReadByte(NET_RECEIVE_STREAM))
Next

angekommen=angekommen+1
Cls
Text 10,10,\"Eingegangene Pakete: \"+angekommen+\"/\"+pakete
Flip

;Bestätigung für den Empfang senden
WriteByte NET_SEND_STREAM,1
SendUDPMsg NET_SEND_STREAM,IP,8000

EndIf
Until angekommen=pakete

CloseFile stream

End

Function INT_IP(IP$)
a1=Int(Left(IP$,Instr(IP$,\".\")-1)):IP$=Right(IP$,Len(IP$)-Instr(IP$,\".\"))
a2=Int(Left(IP$,Instr(IP$,\".\")-1)):IP$=Right(IP$,Len(IP$)-Instr(IP$,\".\"))
a3=Int(Left(IP$,Instr(IP$,\".\")-1)):IP$=Right(IP$,Len(IP$)-Instr(IP$,\".\"))
a4=Int(IP$)
Return (a1 Shl 24) + (a2 Shl 16) + (a3 Shl 8 ) +a4
End Function
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon
Gewinner des BCC #57 User posted image

Smily

Betreff: Zu langsam...

BeitragDo, März 24, 2005 10:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Hattest du schon mal so was versucht?
Wenn ja, geht es da schneller?

Erstelle ersteinmal ein Programm, das "nur so zum Test" die Verbindung aufbaut und daten Verscchickt.

Das Problem kann ja auch sein, das der Rechner vom Sender bzw. Empfänger zu langsam ist.

Firstdeathmaker

BeitragDo, März 24, 2005 11:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Nein, das ist ja ein testprogramm^

Ich habe mich nur darüber gewundert dass man per Windows direkt Daten von PC zu PC viel schneller verschicken kann als mit meinem Programm.


Edit: Habs mal ausprobiert. Mit meinem Programm schaffe ich ca. 64kb/sek. Ich sitze hier an einem 100er Netzwerk, müsste also eigentlich schneller gehen, oder?
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon
Gewinner des BCC #57 User posted image

Vertex

BeitragDo, März 24, 2005 12:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Warum nicht gleich mit Banks arbeiten? ReadBank und WriteBank gehen auch mit Netzwerkbefehlen.

mfg olli
vertex.dreamfall.at | GitHub

Jolinah

BeitragDo, März 24, 2005 12:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Edit: Sorry habs erst nachher gesehen, du hast das ja schon so gemacht wie ich geschrieben hatte.. Embarassed

PS: Aber 1 Stream fürs senden UND empfangen würde reichen, braucht keine separaten.

PPS: Versuchs vielleicht mal mit Paketsize 4096, wobei das wahrscheinlich keinen grossen Unterschied macht.

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group