Netzwerk - IDs verwalten etc.

Anfängerfragen zum Programmieren mit PureBasic.
smateja
Beiträge: 250
Registriert: 25.11.2004 19:51
Computerausstattung: Alienware Aurora / Intel Core i7 CPU @ 2.8 GHz / 64 Bit OS

Netzwerk - IDs verwalten etc.

Beitrag von smateja »

Hallo zusammen - ich hab mir gerade mal angeschaut wie das mit der Netzwerkgeschichte funktioniert etc. habe auch schon versucht in div. Threads etc. mehr über meine Problematik in Erfahrung zu bringen, leider, so muß ich gestehen, komm ich nicht weiter - aber vielleicht hat ja hierzu jemand eine gute Idee etc.

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)
Client:

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   
Kann mir evtl. jemand ein Beispiel geben mit erklärung für die ganz dummen *G - denn ich plans derzeit mal garnicht. Hoffe nur meine Beschreibung war ausrecihend genug - und ja, - merci schon mal für die Hilfe.
Benutzeravatar
mk-soft
Beiträge: 3845
Registriert: 24.11.2004 13:12
Wohnort: Germany

Beitrag von mk-soft »

Habe ein Beispiel geschrieben für Multi User Server

http://www.purebasic.fr/german/viewtopic.php?t=9049

FF :wink:
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
smateja
Beiträge: 250
Registriert: 25.11.2004 19:51
Computerausstattung: Alienware Aurora / Intel Core i7 CPU @ 2.8 GHz / 64 Bit OS

re:

Beitrag von smateja »

ha - mega-merci und sehr geil - jetzt brauch ich nur noch n tut um die foren suche zu optimieren - sorry G* lol - nochmals merci
smateja
Beiträge: 250
Registriert: 25.11.2004 19:51
Computerausstattung: Alienware Aurora / Intel Core i7 CPU @ 2.8 GHz / 64 Bit OS

RE:

Beitrag von smateja »

erneute kleine Problematik - wie schaff ich es dass der server ein einfachs repeat an alle clients schickt - nur nicht an den von dem die nachricht kommt ?! - hat da jemand ne idee vielleicht - habs auch schon selbst versucht - nur anhand der beispiele tuts etc die ich vor mir liegen hab bekomme ich das selbst nicht ganz gebacken - merci

Code: Alles auswählen

Structure client_structure
  ClientID.l
  ClientIP.l
  ClientPort.l
  ClientSocket.l
  
  timeConnect.l
  timeUpdate.l
  
  inData.s
  outData.s
  inFile.s
  outFile.s
  
  login.s
  passwd.s
  rights.l
EndStructure



NewList user.client_structure()



OpenConsole()

InitNetwork()
CreateNetworkServer(00001, 6060, #PB_Network_TCP)


Repeat
    WindowEvent()  
    SEvent = NetworkServerEvent()
  
    If SEvent
    
      ClientID = EventClient()
      ClientIP = GetClientIP(ClientID) 
      
      NetzwerkPuffer = AllocateMemory(1000)
       
      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))
            ForEach User()
              If User()\ClientID = ClientID
                 DeleteElement(User())
                Break
              EndIf 
            Next
              AddElement(User())
                User()\ClientID = ClientID
                User()\ClientIP = GetClientIP(ClientID)
                User()\ClientPort = GetClientPort(ClientID)
                User()\ClientSocket = ConnectionID(ClientID)
  
                User()\timeConnect = Date()
                User()\timeUpdate= Date()
  
                User()\inData = ""+PeekS(NetzwerkPuffer)
                User()\outData = ""+PeekS(NetzwerkPuffer)
                User()\inFile = """
                User()\outFile = ""
              
          
          If PeekS(NetzwerkPuffer)="shutdown"
            End
          EndIf
          
          SendNetworkString(ClientID,"..recieved..")
          
          FreeMemory(NetzwerkPuffer)
          
        Case 4
          PrintN("SV_Event: Client "+Str(ClientID)+" has closed the connection")
          
    
      EndSelect
    EndIf
    Delay(1)
  Until Quit = 1 
  
CloseNetworkServer(0)
smateja
Beiträge: 250
Registriert: 25.11.2004 19:51
Computerausstattung: Alienware Aurora / Intel Core i7 CPU @ 2.8 GHz / 64 Bit OS

re:

Beitrag von smateja »

Niemand ne Idee??
Benutzeravatar
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: re:

Beitrag von Kiffi »

smateja hat geschrieben:Niemand ne Idee??
wir sind hier nicht im Chat!
a²+b²=mc²
smateja
Beiträge: 250
Registriert: 25.11.2004 19:51
Computerausstattung: Alienware Aurora / Intel Core i7 CPU @ 2.8 GHz / 64 Bit OS

re:

Beitrag von smateja »

warum chat - hey ich spreche mit meinem thread ja auch die arbeitslosen und berufstätigen an die nichts zu tun haben und n ganzen tag während der arbeit nichts zu tun haben - oder diejenigen die bei so nem wetter gerne in der bude hocken weil se keine freunde etc haben *G - *spaß muß sein*

(anbei bin wie du a) spammer und b) postsammler - egal wie *G)

ne mir ist bewußt dass nicht sofort ne antwort kommt - aber nach knapp 3 stunden darf ich mich doch emühen dass der thread wieder nach etwas oben rutscht damit er nicht in vergessenheit gerät oder? :)

...... und nun ende der diskussion -.... zurück zum eigentlichen problem -> siehe letztes code bschnippserle *G
Benutzeravatar
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: re:

Beitrag von Kiffi »

kaum im Board gelandet und schon auf dicke Hose machen.

> (anbei bin wie du a) spammer und b) postsammler - egal wie *G)

verstehe ich jetzt nicht. Kannst Du das vielleicht in einer mir bekannten
Sprache wiederholen? Ach nee, vergiss es, lohnt nicht.

> ...... und nun ende der diskussion

wenn Du meinst...
a²+b²=mc²
smateja
Beiträge: 250
Registriert: 25.11.2004 19:51
Computerausstattung: Alienware Aurora / Intel Core i7 CPU @ 2.8 GHz / 64 Bit OS

re:

Beitrag von smateja »

ich meinte damit - das ich es leid bin mich in div. foren outen zu müssen und unproduktive unterhaltungen wie unsere hier gerade zu führen -

mal im ernst ist absolut unproduktiv und bringt garnichts oder?

ne idee auf meine frage hätte mir mehr gebracht als bezeichnungen wie kaum im board und schon einen auf dicke hose machen *naja sind ja erst knapp 2 jahre

und hey als kaum programmierer sollte es doch wohl erlaubt sein hier fragen zu stellen - und wenn so n sinnlos unproduktiver post von dir kommt wie: simmer hier im chat? kommt - naja - mußte halt damit rechnen dass da mein senf hinterher kommt. Ich denke nun ist die zeit gekommen dass wir das beide einfach lassen und gut - weil bringt wohl 0,0
PB 4.6 / 32 Bit / 64 Bit
Benutzeravatar
mk-soft
Beiträge: 3845
Registriert: 24.11.2004 13:12
Wohnort: Germany

Beitrag von mk-soft »

äh???
ha - mega-merci und sehr geil - jetzt brauch ich nur noch n tut um die foren suche zu optimieren
Danke für den Lob, aber leider das konzept von mein Beispiel nicht verstanden.
Habe wohl zu wenig Kommentar geschrieben
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Antworten