Problem Server läuft buggy ab 2 benutzer

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

 

Inkubus

Betreff: Problem Server läuft buggy ab 2 benutzer

BeitragFr, Jul 22, 2005 11:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Also wenn ich mich 2 mal mit Telnet verbinde,
dann läuft es total zeit versetzt aber wieso ?

Vielleicht habt ihr ja mehr erfahrung mit BNet.

Gruß, Gehhilfe ( Inkubus )

Code: [AUSKLAPPEN]
Strict

Framework pub.Bnet
Import brl.linkedlist
Import brl.system
Import brl.standardio

Type Users
   Field Stream   :    Int
   Field IP      :   String
   Field Idle      :   Int


   Global UserList:TList
   
   Function UpdateAll()
      If UserList = Null Then Return
      Local u:Users
      For u:Users = EachIn UserList
         u.Update()
      Next
   End Function
   
   Function BroadCast ( str:String )
      If UserList = Null Then Return
      Local u:Users
      For u:Users = EachIn UserList
         WriteLine ( u.Stream, str )
      Next
   End Function
   
   Function AddUser:Users ( Stream:Int )
      Local u:Users = New Users
      u.Stream = Stream
      u.IP = DottedIP ( TCPStreamIP ( Stream ) )
      u.Idle = MilliSecs()
      Print "Ein User mit der IP "+ u.IP +" hat sich verbunden."
      Return u
   End Function
   
   Method Update ()
      Local str:String
      If Idle > MilliSecs()+1000 Then WriteLine ( Stream , "Lebst du noch?" ) ; Print "User mit der IP "+ IP +" hat sich lange nicht gemeldet"
      While Eof ( Stream ) = 0
         str = ReadLine ( Stream )
         Users.BroadCast ( str )
         Print "Der User mit der IP "+ IP +" schrieb: " + str
         Idle = MilliSecs()
      Wend
      If Eof ( Stream ) = -1 Then Destroy
   End Method
   
   Method New ()
      If UserList = Null Then UserList = CreateList()
      UserList.AddLast Self
   EndMethod
   
   Method Destroy ()
      Print "Der User mit der IP "+ IP +" hat den Verbindung abgebrochen."
      UserList.Remove Self
   End Method

End Type

Const Port : Int = 23
Global TCP : Int, User : Int

TCP = CreateTCPServer ( Port )

If TCP = Null Then RuntimeError "Der Server konnte nicht gestarte werden."

While Not KeyHit ( KEY_ESCAPE )
   User = AcceptTCPStream ( TCP )
   If User <> Null Then
      WriteLine ( User, "Willkommen auf Telnet Chat O Bot" )
      WriteLine ( User, "Wrote by Gehhilfe" )
      Users.AddUser User
   End If
   Users.UpdateAll()
   FlushMem()
Wend

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group