UDP Broadcast Stream

Übersicht BlitzBasic Codearchiv

Neue Antwort erstellen

 

CarpeDingsbums

Betreff: UDP Broadcast Stream

BeitragDi, Dez 26, 2006 14:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallöchen,
ich habe mal versucht, einen UDP-Stream an mehrere Leute zu schicken , für ein Multiplayer Spiel ...
problem war allerdings, dass sich der Stream nicht so ohne weiteres kopieren liess, und einmal versendet, ist er ja weg.

Daher habe ich mir eine 'klasse' geschrieben, die genau wie ein UDP Stream Behandelt werden kann - aber an mehrere Leute verschickt werden kann.

Statt "WriteByte" schreibt man dann einfach BWriteByte,
um die Daten statt dessen in den Stream zu senden.
Mit BSendUDPMsg wird dat ganze dann abgeschickt.

Vorraussetzung : Es muss einen globalen UDP Stream geben,
welcher "UDPStream" heist.
Um den Stream zu leeren, ruft man BClearBuffer() auf.

Vielleicht ja nützlich für den einen oder anderen ?

Code: [AUSKLAPPEN]

;***************************************************************************************************
;*Write Buffer.BB
;***************************************************************************************************
;*
;* Implementiert eine Möglichkeit, Netzwerkstreams in BB zu speichern,
;* Mit dem Sinn, die selbe Nachricht später an mehrere Spieler zu verschicken
;* Die Funktionen heissen wie ihre Blitz Äquivalente, und haben die selben Parameter,
;* Lediglich das Präfix "B" dient der Unterscheidung.
;*
;* Es wird alles gespeichert, und dann beim Send Befehl Byte für Byte in den Stream geschrieben,
;* und sofort abgeschickt.

Global WriteBufferPosition = 0
Global WriteBuffer = CreateBank (10000)
;---------------------------------------------------------------------------------------------------;

Function BWriteInt (i%)
PokeInt WriteBuffer,WriteBufferPosition,i
WriteBufferPosition = WriteBufferPosition + 4
End Function
;---------------------------------------------------------------------------------------------------;

Function BWriteByte (i%)
PokeByte WriteBuffer,WriteBufferPosition,i
WriteBufferPosition = WriteBufferPosition + 1
End Function
;---------------------------------------------------------------------------------------------------;

Function BWriteFloat (i#)
PokeFloat WriteBuffer,WriteBufferPosition,i
WriteBufferPosition = WriteBufferPosition + 4
End Function
;---------------------------------------------------------------------------------------------------;

Function BWriteString (i$)
lenI = Len (i)
BWriteInt(lenI)
;---------------------------------------------------------------------------------------------------;

For counter = 1 To lenI
PokeByte (WriteBuffer,WriteBufferPosition,Asc(Mid (i$,counter,1)))
WriteBufferPosition = WriteBufferPosition + 1
Next
End Function
;---------------------------------------------------------------------------------------------------;
Function BClearBuffer()
WriteBufferPosition = 0
End Function
;---------------------------------------------------------------------------------------------------;
Function BSendUDPMsg (ip%,port%)
Local counter = 0
For counter = 0 To WriteBufferPosition - 1
   WriteByte (UDPStream,PeekByte (WriteBuffer,counter))
Next ;counter
SendUDPMsg (UDPStream,ip%,port%)
End Function
;---------------------------------------------------------------------------------------------------;
---- Private nonkommerzielle HP ---
schattenreisen.de.vu
Beherrsche Deine Angst

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group