Network problem

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

GeGenesis

Betreff: Network problem

BeitragSo, Nov 14, 2004 15:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Also ich wollte ein Chat programmiren und habbe auch alles soweit aber mann kann immer nur 1 Nachrich enpfangen ...

SErver
Code: [AUSKLAPPEN]
e=CreateTCPServer(6001)
If e<>0 Then
Print "Server erfolgreich gestartet"
Else
Print "Server konnte nicht gestartet werden"
End
End If






Repeat
d=AcceptTCPStream(e)

If d Then
Print ReadString(d)
Delay(100)
WriteString d,"Pong"
End If




Until KeyHit(1)

CloseTCPServer svrGame
End

client
Code: [AUSKLAPPEN]
strmGame=OpenTCPStream("192.168.0.6",6001)
If strmGame<>0 Then
Print "Client erfolgreich verbunden"
Else
Print "Konnte keine Verbindung herstellen"
WaitKey
End
End If

Repeat


Print "Ping..."
WriteString strmGame,"Ping"
Delay(100)
Print ReadString(strmgame)






Delay(1000)

Until KeyHit(1)

CloseTCPStream strmGame
End
  • Zuletzt bearbeitet von GeGenesis am So, Nov 14, 2004 17:29, insgesamt einmal bearbeitet

simi

BeitragSo, Nov 14, 2004 16:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Musst es halt die Einagebe in die HAuptschleife packen. Und eine Eigene Inputroutine schreiben, dass das Programm nicht angehalten wird.

Übreigens wenn du suchst, findest du sicher an die 10 Beispiele....
 

GeGenesis

BeitragSo, Nov 14, 2004 17:12
Antworten mit Zitat
Benutzer-Profile anzeigen
danke
ich vergess immer das waitkey immer das ganze prog anhält
 

GeGenesis

BeitragSo, Nov 14, 2004 17:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Codes habe ich erneuert !

Aber der Server gibt immer nur 1 mal pong zurück ...
 

TOONY

BeitragSo, Nov 14, 2004 18:51
Antworten mit Zitat
Benutzer-Profile anzeigen
closespcstream fehlt!
 

GeGenesis

BeitragSo, Nov 14, 2004 18:53
Antworten mit Zitat
Benutzer-Profile anzeigen
ok das auch aber wieso Grig ich nur eimal Pong zurück ?
 

TOONY

BeitragSo, Nov 14, 2004 18:56
Antworten mit Zitat
Benutzer-Profile anzeigen
weil die verbindung immer noch steht und erst wenn eine neue
verbindung aufgebaut wird, pong gesendet wird.

deshalb closetcpsteam, nach dem pong senden!
 

GeGenesis

BeitragSo, Nov 14, 2004 18:59
Antworten mit Zitat
Benutzer-Profile anzeigen
aso ich habe gedacht nach dem ende


DANKE!!!
 

GeGenesis

BeitragSo, Nov 14, 2004 19:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Aber wenn er Den Stream Schliest wird er nicht mehr aufgebaut ...
 

TOONY

BeitragSo, Nov 14, 2004 19:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

closetcpsteam(d)



nicht Code: [AUSKLAPPEN]

closetcpsteam(e)



so gehts Smile
 

GeGenesis

BeitragSo, Nov 14, 2004 20:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Server code:
Code: [AUSKLAPPEN]
e=CreateTCPServer(6001)
If e<>0 Then
Print "Server erfolgreich gestartet"
Else
Print "Server konnte nicht gestartet werden"
End
End If






Repeat
d=AcceptTCPStream(e)
If d Then
a=1
Else
a=0
End If

If a=1
Print ReadString(d)
Delay(100)
WriteString d,"Pong"
CloseTCPStream(e)
EndIf


Until KeyHit(1)

CloseTCPServer svrGame
End


'Stream does not existiren'
Kommt da immer Crying or Very sad
  • Zuletzt bearbeitet von GeGenesis am So, Nov 14, 2004 20:21, insgesamt einmal bearbeitet
 

TOONY

BeitragSo, Nov 14, 2004 20:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

Delay(100)
WriteString d,"Pong"
CloseTCPStream(ed)     <--------   ed?????
EndIf


da hat sich ein schreibfehler eingeschlichen...
nicht
CloseTCPStream(ed) <-------- ed?????
sondern
CloseTCPStream(d) <-------- dann gehts wirklich
 

GeGenesis

BeitragSo, Nov 14, 2004 20:35
Antworten mit Zitat
Benutzer-Profile anzeigen
geht nicht Rolling Eyes

Holzchopf

Meisterpacker

BeitragSo, Nov 14, 2004 22:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Menschenskind.... Arbeite doch endlich mal mit vernünftigen Variablennamen.

Servercode:
Code: [AUSKLAPPEN]

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


Repeat
   Connect = AcceptTCPStream( Server )
   If Connect Then
      Stream = Connect
   EndIf
   If Stream
      If ReadAvail( Stream )
         Print ReadString( Stream )
         Print "Pong..."
         WriteString Stream,"Pong"
      EndIf
   EndIf      

Until KeyHit(1)

CloseTCPServer Server
End



Clientcode:
Code: [AUSKLAPPEN]

Stream=OpenTCPStream("127.0.0.1",6001)
If Stream<>0 Then
   Print "Client erfolgreich verbunden"
Else
   Print "Konnte keine Verbindung herstellen"
   WaitKey
   End
End If

send = 1

Repeat

   If send
      Print "Ping..."
      WriteString Stream,"Ping"
   EndIf
   If ReadAvail( Stream )
      Print ReadString( Stream )
      send = 1
   Else
      send = 0
   EndIf

Until KeyHit(1)

CloseTCPStream Stream
End



Nun die erklärung: AcceptTCPStream wird nur einmal gebraucht (pro Client). Es gibt nämlich, falls ein neuer Client beitritt, das Streamhandle auf den Clientstream zurück, dieses Handle speichert man sich dann. Später fragt man mittels ReadAvail ab, ob neue Daten auf dem Stream sind. Wenn AcceptTCPStream ein erneutes mal aufgerufen wird, liefert dieses nur 0 zurück, da ja kein neuer Client joint. Desshalb sollte das Ergebnis von AcceptTCPStream nicht auf das Streamhandle gespeichert werden, weil ja dieses dann auf 0 gesetzt würde, was zur folge hätte, dass bei ReadAvail eine Fehlermeldung kommt, da der Stream 0 nicht existiert.

Jaja... Diese TCP angelegenheit in sachen Server ist ne ziemlich komplizierte Sache, schade nur, dass das in der Hilfe nirgends so genau beschrieben wird.

MfG
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BYBinaryBorn - Yogurt ♫ (31.10.2018)
Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group