Also:
Mein Problem ist es, dass ich nicht weiß wie ich an einem Server die Clients so verwalten kann, dass ich Sie einzeln ansprechen kann (gezielt) - Mir ist klar dass ich hier ne Art kleine Datenbank benötige nur beim umsetzten hab ich glaub Logikprobleme, gerade wenn ich die anderen Beispiele hierzu anschaue.
Server:
Code: Alles auswählen
Structure Aktive_Clients
ClientID.l
Nickname.s
EndStructure
Dim Client_Liste.Aktive_Clients(4000)
OpenConsole()
InitNetwork()
CreateNetworkServer(00001, 6060, #PB_Network_TCP)
NetzwerkPuffer = AllocateMemory(1000)
Repeat
WindowEvent()
SEvent = NetworkServerEvent()
If SEvent
ClientID = EventClient()
ClientIP = GetClientIP(ClientID)
Select SEvent
Case 1
PrintN("SV_Event: Client connected "+Str(ClientID)+" "+IPString(ClientIP))
Case 2
Print("SV_Event: "+Str(ClientID)+" "+IPString(ClientIP))
ReceiveNetworkData(ClientID, NetzwerkPuffer, 1000)
PrintN(" "+PeekS(NetzwerkPuffer))
Debug Befehl$=PeekS(NetzwerkPuffer)
If Befehl$="godmode"
End
EndIf
SendNetworkString(ClientID,"..recieved..")
FreeMemory(NetzwerkPuffer)
NetzwerkPuffer = AllocateMemory(1000) ; zum leeren sonst bleiben reste von der vorherigen nachrit drin, warum auch immer
Case 4
PrintN("SV_Event: Client "+Str(ClientID)+" has closed the connection")
EndSelect
EndIf
Delay(1)
Until Quit = 1
CloseNetworkServer(0)
Code: Alles auswählen
InitNetwork()
newconnect:
OpenConsole()
ConnectionID = OpenNetworkConnection("127.0.0.1", 6060,#PB_Network_TCP)
NetzwerkPuffer = AllocateMemory(1000)
If ConnectionID
Print("Nickname: ")
UserID$=Input()
Repeat
CEvent = NetworkClientEvent(ConnectionID)
Select CEvent
Case 2
ReceiveNetworkData(ConnectionID, NetzwerkPuffer, 1000)
PrintN(" "+PeekS(NetzwerkPuffer))
FreeMemory(NetzwerkPuffer)
NetzwerkPuffer = AllocateMemory(1000)
Case 0
Print("Nachricht: ")
zuSenden$ = Input()
SendNetworkString(ConnectionID, UserID$+" "+zuSenden$)
ReceiveNetworkData(ConnectionID, NetzwerkPuffer, 1000)
PrintN(" "+PeekS(NetzwerkPuffer))
FreeMemory(NetzwerkPuffer)
NetzwerkPuffer = AllocateMemory(1000)
EndSelect
Until zuSenden$="exit"
EndIf
End