TCP Verbindung Abfrage

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Raiden93

Betreff: TCP Verbindung Abfrage

BeitragMi, Nov 03, 2010 15:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey,
ich habe mir zum Testen meiner Verbindungen ein kleines Programm geschrieben, doch leider Tretet ein kleiner Fehler auf der mich zum verzweifeln bringt.Ich hoffe ihr könnte mir Helfen.

Der Fehler:
Sobald ich den Server gestartet habe, starte ich natürlich den Client und es Funktioniert alles einwandfrei.Aber schließe ich den Server/Client steht im meinem Programm, immer noch das die Verbindung steht.


Hier der Client:
Code: [AUSKLAPPEN]
AppTitle "Client Versuch"
Graphics 400,300,32,2
SetBuffer BackBuffer()
Global FPStimer = CreateTimer(60)

;Zum Server Verbinden
Global Stream = OpenTCPStream("127.0.0.1",7777)
If Not Stream Then RuntimeError "Verbindung konnte nicht hergestellt werden."

Global Verbunden = False


Repeat
   Cls
   Verbunden_Abfrage()
   
   
   Flip 0
   WaitTimer (FPStimer)
Until KeyHit(1)
CloseTCPStream(Stream)
End


Function Verbunden_Abfrage()
   If Stream
      Verbunden = True
   Else
      Verbunden = False
   End If
   
   If Verbunden = True
      Color 0,255,0
      Text 10,10,"Server Verbunden"
   Else
      Color 255,0,0
      Text 10,10,"Server nicht Verbunden"
   End If
End Function



Hier der Server:
Code: [AUSKLAPPEN]
AppTitle "Server Versuch"
Graphics 400,300,32,2
SetBuffer BackBuffer()

;Server eröffnen
Global Stream = CreateTCPServer(7777)
Global NewClient, ClientStream
Global Verbunden = False


Repeat
   Cls
   Player_Accept()
   Verbindung_Abfragen()
   
   Flip 0
Until KeyHit(1)
CloseTCPStream( ClientStream )
CloseTCPServer( Stream )
End

Function Player_Accept()
   NewClient = AcceptTCPStream(Stream)
   If NewClient
      ClientStream = NewClient
   End If
End Function

Function Verbindung_Abfragen()
   If ClientStream
      Verbunden = True
   Else
      Verbunden = False
   End If
   
   If Verbunden = True
      Color 0,255,0
      Text 10,10,"Client Verbunden"
   Else
      Color 255,0,0
      Text 10,10,"Client nicht Verbunden"
   End If
End Function


MFG:
Raiden93/Kevin

Johannes´

BeitragMi, Nov 03, 2010 15:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Das Problem ist, dass du ja nur am Anfang deinen Stream definierst und einen Wert hineinschreiben lässt. Während des Ablaufs fragst du dann nach, was für ein Wert dieser Stream enthält. Der Wert bleibt immer gleich, er kann sich ja nicht einfachso ändern, auch wenn die Verbindung nicht mehr besteht.
Vielleicht kannst du sowas wie einen Ping-Befehl einbauen, der prüft, ob der Server/Client noch da ist, bzw. ob das Programm dort noch läuft.

Raiden93

BeitragMi, Nov 03, 2010 16:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey,
ich bin es nochmal.Ich habe das Programm etwas verbessert.Das mit der Verbindung unterbrechen geht zwar noch nicht, aber das ist gerade nicht das Problem.Diesmal versuche ich einen Oval zu erstellen den man Bewegen kann, und wenn ein anderer Client Joint den Oval auch sieht.Leider Zeichnet mein Client den Oval nicht, da er erst abfragen soll ob er es überhaupt darf.Es scheint aber nix vom Server zu kommen.Ich habe mir gedacht das es Vielleicht daran lege das ich mit True und False arbeite, aber es als Intenger übertrage?

Client:
Code: [AUSKLAPPEN]
Type Spielertyp
   Field X#, Y#, Speed#
End Type
Global Spieler.Spielertyp

AppTitle "Client Versuch"
Graphics 400,300,32,2
SetBuffer BackBuffer()
Global FPStimer = CreateTimer(60)

;Zum Server Verbinden
Global Stream = OpenTCPStream("127.0.0.1",7777)
If Not Stream Then RuntimeError "Verbindung konnte nicht hergestellt werden."
Global Verbunden = False
Global Spieler_Spawn = False
Global Slot



Repeat
   Cls
   Verbunden_Abfrage()
   Spieler_Erstellen()
   Spieler_Zeichnen()
   Spieler_Steuerung()
   Datentransfer()
   Flip 0
   WaitTimer (FPStimer)
Until KeyHit(1)
CloseTCPStream(Stream)
End


Function Verbunden_Abfrage()
   If Stream
      Verbunden = True
   Else
      Verbunden = False
   End If
   
   If Verbunden = True
      Color 0,255,0
      Text 10,10,"Server Verbunden"
   Else
      Color 255,0,0
      Text 10,10,"Server nicht Verbunden"
   End If
End Function

Function Spieler_Erstellen()
   If  Spieler_Spawn = True
      Spieler_Spawn = False
      Spieler.Spielertyp = New Spielertyp
      Spieler\X = 200
      Spieler\Y = 150
      Spieler\Speed = 0.2
   End If
End Function

Function Spieler_Zeichnen()
   For Spieler.Spielertyp = Each Spielertyp
      Color 0,0,255   
      Oval Spieler\X,Spieler\Y,5,5
   Next
End Function

Function Spieler_Steuerung()
   For Spieler.Spielertyp = Each Spielertyp
      If KeyDown(203)
         Spieler\X = Spieler\X -1
      Else If KeyDown(205)
         Spieler\X = Spieler\X +1
      Else If KeyDown(200)
         Spieler\Y = Spieler\Y -1
      Else If KeyDown(208)
         Spieler\Y = Spieler\Y +1
      End If
   Next
End Function

Function Datentransfer()
   If Stream
      While ReadAvail (Stream)
         For Spieler.Spielertyp = Each Spielertyp
            ReadInt(Stream)
            
            WriteInt Stream,Spieler_Spawn
         Next
      Wend
   End If
End Function




Server:
Code: [AUSKLAPPEN]
Type Spielertyp
   Field X#, Y#, Speed#
End Type

Global Spieler.Spielertyp

AppTitle "Server Versuch"
Graphics 400,300,32,2
SetBuffer BackBuffer()

;Server eröffnen
Global Stream = CreateTCPServer(7777)
Global NewClient, ClientStream
Global Verbunden = False
Global Slot = 3
Global Spieler_Slot = 0
Global Spieler_Spawn = True


Repeat
   Cls
   Server_Stats()
   Player_Accept()
   Verbindung_Abfragen()
   Datentransfer()
   
   Flip 0
Until KeyHit(1)
CloseTCPStream( ClientStream )
CloseTCPServer( Stream )
End

Function Server_Stats()
   Color 0,255,0
   Text 10,35,"Spieler: "+Spieler_Slot+" / "+Slot
End Function

Function Player_Accept()
   NewClient = AcceptTCPStream(Stream)
   If NewClient
      ClientStream = NewClient
      Spieler_Slot = Spieler_Slot +1
      Spieler_Spawn = True
   End If
End Function

Function Verbindung_Abfragen()
   If ClientStream
      Verbunden = True
   Else
      Verbunden = False
   End If
   
   If Verbunden = True
      Color 0,255,0
      Text 10,10,"Client Verbunden"
   Else
      Color 255,0,0
      Text 10,10,"Client nicht Verbunden"
   End If
End Function

Function Datentransfer()
   If ClientStream
      While ReadAvail(ClientStream)
         For Spieler.Spielertyp = Each Spielertyp
            ReadInt(ClientStream)
            
            WriteInt ClientStream,Spieler_Spawn
         Next
      Wend
   End If
      
End Function

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group