[B+]Server-client problem (selbsterledigt)
Übersicht

![]() |
s_m_wBetreff: [B+]Server-client problem (selbsterledigt) |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo und so,
Ich habe mir mal ein kleines server-client system geschrieben, nur wird es mit meinem jetzigen code komplett aufgehängt, bis der neue client komplett verbunden ist, jemand eine Idee wie ich das bessern könnte? Server: Code: [AUSKLAPPEN] Type stream
Field Stream Field Name Field id Field Ping 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) strStream=AcceptTCPStream(svrGame) If strStream Then s.stream=New stream s\Stream=strStream t1=0:t2=0 While Not ReadAvail(strStream) t1=MilliSecs() If t1>t2+5000 Then t2=MilliSecs() Print "Warte auf connect anfrage" EndIf Wend If ReadString(strStream)=Chr(187)+"Connect" Then s\id=CheckId() WriteString(strStream,s\id) Else ;Weg damit Kick(s\Stream) Delete s.Stream Print "Erroneus connect" Gosub err1 EndIf t3=0:t4=0 While Not ReadAvail(strStream) t3=MilliSecs() If t3>t4+5000 Then t4=MilliSecs() Print "Warte auf Namen" EndIf Wend temp=ReadString$(strStream) s\Name=temp s\Ping=1 Print "Neuer stream: "+s\Name EndIf .err1 t1=MilliSecs() If t1>t2+5000 Then t2=MilliSecs() Print "Sende daten an alle streams (Ping Pong)" For s.stream=Each Stream ; Alle löschen die keinen ping mehr haben If s\Ping=0 Then Print "Client "+ s\id +" disconnected ("+ s\Name +")" Delete s.stream Else ;Nächsten Ping senden Print "Sende an client "+ s\id+ " ("+ s\Name +")" WriteString s\stream,Chr(187)+"Ping?" s\Ping=0 EndIf Next EndIf For s.stream=Each Stream If ReadAvail(s\Stream) Then If ReadString(s\Stream)=Chr(187)+"Pong!" Then s\Ping=1 Print "Pong von client "+s\id+" bekommen" 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 SeedRnd MilliSecs() strmGame=OpenTCPStream("127.0.0.1",8080) If strmGame<>0 Then Print "Client erfolgreich verbunden" Delay 10 Print "Sende Anfrage" WriteString strmGame,Chr(187)+"Connect" Print "Warte..." While Not ReadAvail(strmGame) Delay 1 Wend id=ReadString(strmGame) Print "Id bekommen: "+id Print "Sende Name" WriteString strmGame,Input("Name?") ;Ich sollte den Namen erst abfragen, dann senden, ich weiß Else Print "Konnte keine Verbindung herstellen" WaitKey End End If While Not KeyHit(1) If ReadAvail(strmGame) Then Strng=ReadString(strmGame) 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 |
||
Sheep Happens |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group