tcp-geschwindigkeit erhöhen

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

FluiX

Betreff: tcp-geschwindigkeit erhöhen

BeitragDi, Jul 12, 2005 15:54
Antworten mit Zitat
Benutzer-Profile anzeigen
ALso schaut euch die Programme mal an, geht auch ohne intternet


Server
BlitzBasic: [AUSKLAPPEN]

AppTitle\"Server\"
Const server_port=8800
Const Player_anzahl=500
Global index_Aktuell=1

i=1

SetBuffer BackBuffer()
Graphics 500,500,16,2

Dim Stream(100)

;server erstellen
svrGame=CreateTCPServer(server_port)
If svrGame<>0 Then
Print \"Server erfolgreich gestartet\"
Print \"Warte auf Verbindung der Clienten...\"
Else
Print \"Server konnte nicht gestartet werden\"
End
End If

timer=CreateTimer (120)

Repeat
Cls

neuer_stream=AcceptTCPStream(svrGame)
If neuer_stream Then stream(1)=neuer_stream


If stream(i)<>0
Text 10,10,DottedIP(TCPStreamIP(stream(i)))+\" X_Pos: \"+ReadLine(stream(i))
Text 10,30,DottedIP(TCPStreamIP(stream(i)))+\" Y_Pos: \"+ReadLine(stream(i))
EndIf



Flip
WaitTimer (timer)
Until KeyDown(1)

CloseTCPServer svrGame
End


Client:
BlitzBasic: [AUSKLAPPEN]
AppTitle \"Client\"
Const server_ip$=\"127.0.0.1\"
Const server_port=8800

SetBuffer BackBuffer()
Graphics 500,500,16,2

Print \"zum starten eine Tast drücken!!\"
WaitKey() : FlushKeys()

strmGame=OpenTCPStream(Server_ip,Server_Port) ;Stream wird geöffnet
If strmGame<>0 Then
Print \"Client erfolgreich verbunden\"
Else
Print \"Konnte keine Verbindung herstellen\"
WaitKey
End
End If

timer=CreateTimer (120)

Repeat
Cls

If KeyDown(205) Then player_pos_X=player_pos_X+5
If KeyDown(203) Then player_pos_X=player_pos_X-5
If KeyDown(208) Then player_pos_Y=player_pos_Y+5
If KeyDown(200) Then player_pos_Y=player_pos_Y-5

WriteLine strmgame,player_pos_X
WriteLine strmgame,player_pos_Y

Text 10,10,\"X: \"+player_pos_X+\" Y:\"+player_pos_Y

Flip
WaitTimer (timer)
Until KeyDown(1)


CloseTCPStream strmGame
End


So also jetzt hab i des folgenede Problem es fällt euch vielleicht auch auf, dass es n bissl dauert bis die daten übertragen sind. Wie kann ich ds optimieren?
traue niemandem!!!

FluiX

BeitragDo, Jul 14, 2005 14:48
Antworten mit Zitat
Benutzer-Profile anzeigen
wieso hilft mir den keiner, wär echt wichtig!! BItte
traue niemandem!!!

Jan_

Ehemaliger Admin

BeitragDo, Jul 14, 2005 14:53
Antworten mit Zitat
Benutzer-Profile anzeigen
UDP
between angels and insects
 

BlackTermi

BeitragDo, Jul 14, 2005 16:00
Antworten mit Zitat
Benutzer-Profile anzeigen
sehr kurz und aussagekräftig Wink

hmm ich weiss ja nicht ob das anderen auch so geht aber ich kann dein programm nicht starten, vllt is das ja der grund warum niemand dir helfen kann....

FluiX

BeitragDo, Jul 14, 2005 20:00
Antworten mit Zitat
Benutzer-Profile anzeigen
ok stimmt der will da n endif muss ich übersehen haben. Sorry, also UDP wär vielleicht schneller aber es muss doch trotzdem mit tcp gehn, ich will ja nur 2 variabeln schicken. Und außerdem is mir aufgefallen dass das ganze mit print geht.

Also nochmal:

BlitzBasic: [AUSKLAPPEN]

AppTitle\"Server\"
Const server_port=8800
Const Player_anzahl=500
Global index_Aktuell=1

i=1

SetBuffer BackBuffer()
Graphics 500,500,16,2

Dim Stream(100)

;server erstellen
svrGame=CreateTCPServer(server_port)
If svrGame<>0 Then
Print \"Server erfolgreich gestartet\"
Print \"Warte auf Verbindung der Clienten...\"
Else
Print \"Server konnte nicht gestartet werden\"
End
End If

timer=CreateTimer (100)

Repeat
Cls

neuer_stream=AcceptTCPStream(svrGame)
If neuer_stream Then stream(1)=neuer_stream


If stream(i)<>0
Text 10,10,DottedIP(TCPStreamIP(stream(i)))+\" X_Pos: \"+ReadLine(stream(i))
Text 10,30,DottedIP(TCPStreamIP(stream(i)))+\" Y_Pos: \"+ReadLine(stream(i))
EndIf



Flip
WaitTimer (timer)
Until KeyDown(1)

CloseTCPServer svrGame
End



BlitzBasic: [AUSKLAPPEN]

AppTitle \"Client\"
Const server_ip$=\"127.0.0.1\"
Const server_port=8800

SetBuffer BackBuffer()
Graphics 500,500,16,2

Print \"zum starten eine Tast drücken!!\"
WaitKey() : FlushKeys()

strmGame=OpenTCPStream(Server_ip,Server_Port) ;Stream wird geöffnet
If strmGame<>0 Then
Print \"Client erfolgreich verbunden\"
Else
Print \"Konnte keine Verbindung herstellen\"
WaitKey
End : EndIf

timer=CreateTimer (100)

Repeat
Cls

If KeyDown(205) Then player_pos_X=player_pos_X+5
If KeyDown(203) Then player_pos_X=player_pos_X-5
If KeyDown(208) Then player_pos_Y=player_pos_Y+5
If KeyDown(200) Then player_pos_Y=player_pos_Y-5

WriteLine strmgame,player_pos_X
WriteLine strmgame,player_pos_Y

Text 10,10,\"X: \"+player_pos_X+\" Y:\"+player_pos_Y

Flip
WaitTimer (timer)
Until KeyDown(1)


CloseTCPStream strmGame
End
traue niemandem!!!
 

furbolg

BeitragDo, Jul 14, 2005 21:06
Antworten mit Zitat
Benutzer-Profile anzeigen
2 Tips:

1) Sende so selten wie es geht
2) Sende so wenig Bytes wie es geht

FluiX

BeitragDo, Jul 14, 2005 21:55
Antworten mit Zitat
Benutzer-Profile anzeigen
ja gut das is ne gute idee jetzt fragt sich wie oft soll ich senden sagen wir wie oft pro sekunde. Und wie stell ich das an? Soll ich n Zähler mitlaufen lassen oder so? Wenn ich im clienten den timer runterstell auf zB 500 milliswecs() und im server n anderen Wert hab dann spinnt alles
traue niemandem!!!
 

SebastianB

BeitragFr, Jul 15, 2005 10:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

wie deinem Quelltext zu entnehmen ist, startest du ja beide Programme gleichzeitig auf deinem PC. Bei mir ist es so, dass dann die TCP-Verbindung sehr langsam ist. Wenn du nun aber zwei PCs einsetzt, dann geht es viel schneller.

MfG
Sebastian
Never change a running system
 

BlackTermi

BeitragFr, Jul 15, 2005 18:59
Antworten mit Zitat
Benutzer-Profile anzeigen
hmm ich hab es jetzt auch noch mal zwischen verschiedenen pcs und auf jedem einzeln probiert und ich muss ganz ehrlich sagen das ich gar nicht weiss was du hast, den millisekundenunterschied zwischen klick und übertragung bemerkt man doch kaum...

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group