[B+]Client-server die zweite

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

s_m_w

Betreff: [B+]Client-server die zweite

BeitragFr, Jun 23, 2006 19:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok, da sich mein anderes Problem von selbst gelöst hat, jetzt mal eine neue Frage. Ich habe diesen Code:

Server:
Code: [AUSKLAPPEN]
Type stream
  Field Stream
  Field Name
  Field id
  Field Pingactive
  Field Pingtemp
  Field Ping
End Type

Type connectstream
  Field Stream
End Type

svrGame=CreateTCPServer(8080)
If svrGame<>0 Then
  Print "Server erfolgreich gestartet"
Else
  Print "Server konnte nicht gestartet werden"
  End
End If

Global t1,t2,t3,t4

While Not KeyHit(1)
; Neue streams akzepieren
strStream=AcceptTCPStream(svrGame)
If strStream Then
   s.connectstream=New connectstream
   s\Stream=strStream
   Print "Neue anfrage"
EndIf

   ;Connections akzepiterien und so
   For s.connectstream=Each connectstream
     If ReadAvail(s\stream)
       If ReadString(s\stream)=Chr(187)+"Connect" Then
         d.stream=New stream
         d\stream=s\stream
         d\id=CheckId()
         d\Pingactive=1
         Delete s.connectstream
         WriteString(d\stream,d\id)
          Print "Neuer stream. Id "+d\id
         ;Exit
       EndIf
     EndIf
   Next

; Ping Pong
  t1=MilliSecs()
  If t1>t2+5000 Then
    t2=MilliSecs()
    Print "Sende daten an alle streams (Ping Pong)"
    For f.stream=Each Stream
       ; Alle löschen die keinen ping mehr haben
       If f\Pingactive=0 Then
         Print "Client "+ f\id +" disconnected ("+ f\Name +")"
         Kick(f\stream)
         Delete f.stream
       Else
         ;Nächsten Ping senden
         Print "Sende an client "+ f\id+ " ("+ f\Name +")"
         WriteString f\stream,Chr(187)+"Ping?"
         f\Pingtemp=MilliSecs()
         f\Pingactive=0
       EndIf
    Next
  EndIf

For g.stream=Each Stream
  If ReadAvail(g\Stream) Then
    If ReadString(g\Stream)=Chr(187)+"Pong!" Then
      g\Pingactive=1
      g\Ping=MilliSecs()-g\Pingtemp
      Print "Pong von client "+g\id+" bekommen. Ping: "+g\Ping
    EndIf
  EndIf
Next

Wend

CloseTCPServer svrGame
End

Function CheckId()
  x=0
  For s.stream=Each stream
    If Not s\id=x Then
      Return(x)
    EndIf
    x=x+1
  Next
End Function

Function Kick(stream)
  WriteString(stream,Chr(187)+"kicked")
End Function


Client:
Code: [AUSKLAPPEN]
Global id,Strng$

SeedRnd MilliSecs()
strmGame=OpenTCPStream("127.0.0.1",8080)
If strmGame<>0 Then
  Print "Client erfolgreich verbunden"
  Print "Sende Anfrage"
  WriteString strmGame,Chr(187)+"Connect"
  Print "Warte..."

  While Not ReadAvail(strmGame)
    Delay 1
  Wend

  id=ReadString(strmGame)
  Print "Id bekommen: "+id
Else
  Print "Konnte keine Verbindung herstellen"
  WaitKey
  End
End If

While Not KeyHit(1)
  If ReadAvail(strmGame) Then
    Strng$=ReadString(strmGame)
    Print Strng$
    If Strng$=Chr(187)+"Ping?" Then
      WriteString(strmGame,Chr(187)+"Pong!")
      Print "Ping? Pong!"
    EndIf
    If Strng$=Chr(187)+"kicked" Then
      Print "Kicked from server"
      CloseTCPStream strmGame
    EndIf
  EndIf
Wend
CloseTCPStream strmGame
End


Doch gibt der sverer mir bei meinem kumpel den ping von ~600 aus, obwohl er in absolut jedem spiel/chat/etc. einen ping von rund ~100 hat. Liegt das an bb oder an mir?
Sheep Happens

Hellfront

BeitragFr, Jun 23, 2006 19:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Warum hast du das nicht in den ersten Thread gepostet? Das wäre verdammt nochmal Übersichtlicher.

s_m_w

BeitragFr, Jun 23, 2006 19:25
Antworten mit Zitat
Benutzer-Profile anzeigen
ups, stimmt... Sry
Sheep Happens

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group