TCP Clients<>Server Verbindung

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

leviathan

Betreff: TCP Clients<>Server Verbindung

BeitragMi, Dez 19, 2012 20:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo zusammen,

ich bin dabei ich Multiplayer-Spiel zu erstellen.
Ich habe es bereits geschafft testweise ein Ping-Pong Spiel mit Server und Client zu erstellen was auch gut funktioniert.
Ich verwende TCP.

Jedoch hätte ich gern ein Server-Program und beispielsweise 4 Client-Programme.
Die 4 Clients sollen sich mit dem Server-Programm verbinden können.
Sprich ich will das Client A ein Paket an der Server schickt und über den Server via Broadcast dieses Paket an Client B,C,D weitergeleitet wird.

Ich habe folgende Funktionen gefunden die mich weiterbringen könnten:

Code: [AUSKLAPPEN]
 IP = TCPStreamIP (Stream)


Code: [AUSKLAPPEN]
 Port = TCPStreamPort (Stream)


Da TCP ja verbindungsorientiert ist frage ich mich für was diese Funktionen gut sein können in diesem Bereich, da TCP ja nicht bei den Paketen die Portnr.. etc mitschickt

Meine Frage also..

> Ist es möglich über einen TCP-Server an mehrere Clients zu verschicken , falls ja wie funktioniert das? <

Freue mich auf eure Antworten!! Smile

ZEVS

BeitragMi, Dez 19, 2012 20:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Je ein Stream pro Client-Server-Verbindung. Der Server liest aus Stream A aus und schreibt das dann in die Streams B, C und D.

ZEVS
 

leviathan

BeitragMi, Dez 19, 2012 21:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok.

Code: [AUSKLAPPEN]
Local Stream = CreateTCPServer( 12345 )


Code: [AUSKLAPPEN]
NewClient = AcceptTCPStream( Stream )
   If NewClient
         ClientStream = NewClient
EndIf


Brauche ich jetzt für jeden Client einen einzelnen AcceptTCPStream?

Oder könnte ich das über ein Array machen mit einer Zählervariable wenn ich auf dem TCP-Server warten
will bis alle Clients verbunden sind?
Also:

Code: [AUSKLAPPEN]

NewClient(0) = AcceptTCPStream( Stream )
   If NewClient(0)
         ClientStream(mainprogram) = NewClient(0)
EndIf


bzw. woher weis ich von wem das Paket kommt und an wenn es geschickt werden soll?
Ich glaub ein kleines Beispiel würde mich weiterbringen :p

Xeres

Moderator

BeitragMi, Dez 19, 2012 21:10
Antworten mit Zitat
Benutzer-Profile anzeigen
~VERSCHOBEN~
Dieser Thread passte nicht in das Forum, in dem er ursprünglich gepostet wurde.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

ZEVS

BeitragMi, Dez 19, 2012 21:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Beispiel:
BlitzBasic: [AUSKLAPPEN]
Dim Clients(3)
Global index
; wiederholt:
stream = AcceptTCPStream( Server )
If stream Then
Clients(index) = stream
index = index+1
EndIf
; ...
If index = 4 Then
; Spiel starten
EndIf
; im Mainloop:
For i=0 To 3
While ReadAvail(Clients(i)) ; Client i hat mir etwas geschrieben
txt$ = ReadLine(Clients(i)) ; bei textbasierten Protokollen. Ansonsten idealerweise ReadBytes
For j=0 To 3
If i <> j Then WriteLine Clients(i), txt; jedem anderen Client das gelesene schicken
Next
Wend
Next

Merke: CreateTCPServer gibt keinen Stream zurück!

ZEVS
 

leviathan

BeitragMi, Dez 19, 2012 21:42
Antworten mit Zitat
Benutzer-Profile anzeigen
SUPER VIELEN DANK!!!

genau das habe ich gesucht Smile

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group