Seite 3 von 4

Verfasst: 15.06.2005 07:03
von AirTokio
Wow danke für die ganzen Tipps :allright:
Bloss beim starten kommt bei deinem PrintN: PrintN(PeekS(*Buffer, Length)
Immer ein Fehler: PrintN() : Incorrect number of parameters!

Ausserdem wieso soll ich Event 4 überprüfen, wenn es den gar nicht gibt :shock: ??

Mein Quelltext sieht jetzt so aus:
;###########
NewList Clients.l()
;##############
OpenConsole()

ConsoleTitle("Server")
ConsoleColor (15, 0)



If InitNetwork() = 0
PrintN("Konnte Netzwerk nicht finden !")
End
EndIf

Port = 6832
Buffer = AllocateMemory(1000)

If CreateNetworkServer(Port)

PrintN("Server wurder erstellt (Port "+Str(Port)+").")

Repeat

SEvent.l = NetworkServerEvent()

If SEvent

ClientID = NetworkClientID()

Select SEvent

Case 1
PrintN("Ein neuer Client hat sich angemeldet !")
;#################
AddElement(Clients())
Clients() = NetworkClientID()
;###################
Case 2
Length.l = ReceiveNetworkData(NetworkClientID(), Buffer, 1000)


PrintN(PeekS(*Buffer, Length)
ForEach Clients()
If Clients() <> ClientID
SendNetworkString(Clients(), PeekS(Buffer, Length))
EndIf
Next




Case 3
PrintN("Client "+ Str(ClientID) + " hat die Verbindung beendet...")





EndSelect
EndIf

Until Quit = 1

PrintN("Klicke zum beenden des Servers.")
Input()
CloseNetworkServer()
Else
PrintN("Konnte Server nicht erstellen (Wird der Port bereits benutzt ?).")
EndIf


End

Verfasst: 15.06.2005 08:49
von Zaphod
in der zeile bei der er meckert hast du eine schließende klammer vergessen.

Verfasst: 15.06.2005 10:10
von HeX0R
Ausserdem wieso soll ich Event 4 überprüfen, wenn es den gar nicht gibt
Vielleicht solltest du die Hilfe zu NetworkServerEvent() nochmals genauer lesen, oder die Brille putzen...

Verfasst: 15.06.2005 12:33
von AirTokio
Jawoll habs jetzt mit dem Case verstanden! Funzt jetzt auch so weit!
Aber der Server schickt es immer noch nich an alle Clients weiter!
Liegts am Client?

Client:

Code: Alles auswählen

OpenConsole()                                              
 
ConsoleTitle("Client")                              
ConsoleColor (15, 0)


If InitNetwork() = 0
   PrintN("Kein Netzwerk gefunden!")
  End
EndIf


Port = 6832
ConnectionID = OpenNetworkConnection("127.0.0.1", Port)


PrintN("Willkommen zu NextConextion!")
PrintN("")
Delay(2000)
Print("Verbindung wird hergestellt")
Delay(1000)
Print(".")
Delay(1000)
Print(".")
Delay(1000)
Print(".")
Delay(1000)
PrintN(".")
PrintN("")

If ConnectionID
  PrintN("Client ist verbunden mit Server...")
  Delay(1000)
  ClearConsole ()

PrintN("Willkommen zum Chat!")
PrintN("")
     
Repeat
     
   
PrintN("")
string$ = Input ()
SendNetworkString(ConnectionID, String$)


 



     
    SEvent.l = NetworkServerEvent()
 
    If SEvent
   
      ClientID = NetworkClientID()
 
      Select SEvent
     
           
        
        
        Case 2
          Length.l = ReceiveNetworkData(NetworkClientID(), Buffer, 1000)
          
          
          PrintN(PeekS(Buffer, Length))



 
      EndSelect
   EndIf








     
   
ForEver
  

Else
  PrintN("Konnte Server nicht finden!")
EndIf

Input ()
  
End

Verfasst: 15.06.2005 15:37
von HeX0R
HeX0R hat geschrieben: Da deine CLients aber im Input() festhängen und keinerlei Signale vom Server auswerten, wirst du trotzdem nie ne Meldung kriegen!
Das sollte deine Frage klären

Input() is dafür ned wirklich sinnvoll... es wird ja quasi nix anderes ausgeführt, bis der User mal irgendwann Return gedrückt hat

Ausserdem kann der Client mit NetworkServerEvent() nix anfangen... besser wäre NetworkClientEvent(ConnectionID)

Verfasst: 15.06.2005 16:17
von AirTokio
OK habs verändert!
Aber was nehme ich denn anstatt von Print?

Hier der Code:

Code: Alles auswählen

OpenConsole()                                             
 
ConsoleTitle("Client")                             
ConsoleColor (15, 0)


If InitNetwork() = 0
   PrintN("Kein Netzwerk gefunden!")
  End
EndIf


Port = 6832
ConnectionID = OpenNetworkConnection("127.0.0.1", Port)


PrintN("Willkommen zu NextConextion!")
PrintN("")
Delay(2000)
Print("Verbindung wird hergestellt")
Delay(1000)
Print(".")
Delay(1000)
Print(".")
Delay(1000)
Print(".")
Delay(1000)
PrintN(".")
PrintN("")

If ConnectionID
  PrintN("Client ist verbunden mit Server...")
  Delay(1000)
  ClearConsole ()

PrintN("Willkommen zum Chat!")
PrintN("")
     
Repeat
     
   
PrintN("")
string$ = Input ()
SendNetworkString(ConnectionID, String$)


 



     
clientEvent.l = NetworkClientEvent(ConnectionID)
 
    If SEvent
   
      ClientID = NetworkClientID()
 
      Select SEvent
     
           
       
       
        Case 2
          Length.l = ReceiveNetworkData(NetworkClientID(), Buffer, 1000)
         
         
          PrintN(PeekS(Buffer, Length))



 
      EndSelect
   EndIf








     
   
ForEver
 

Else
  PrintN("Konnte Server nicht finden!")
EndIf

Input ()
 
End  

Verfasst: 15.06.2005 16:32
von HeX0R
Hmm... also nix für Ungut, aber hier sin doch vieel zu vieele Lücken im Verständnis vorhanden!

Es scheint, als würdest du alles (und das auch noch ab und an falsch) aus unseren Hilfen zusammenkopieren, ohne auch nur irgendwann den Versuch zu starten irgendwas davon zu verstehen...

Ich für meinen Teil bin aus dieser "Fütterung" erst mal raus, was nu nicht heissen soll, ich würde Anfänger nicht versuchen zu unterstützen!
Aber unterstützen und vorkauen sind nu mal doch recht unterschiedliche Dinge...

Viel Glück mit deinem Chat!

Gruss
HeX

Verfasst: 15.06.2005 20:07
von Spirit
HeX0R hat geschrieben:Es scheint, als würdest du alles (und das auch noch ab und an falsch) aus unseren Hilfen zusammenkopieren, ohne auch nur irgendwann den Versuch zu starten irgendwas davon zu verstehen...
Dem kann ich nur zustimmen. Es ist für den Anfang vielleicht doch etwas zu schwer ein Chat-Programm zu schreiben. Falls du es trotzdem weiter versuchen möchtest, Print() solltest du durch PrintN() ersetzen, sonst kommt alles auf der gleichen Zeile (hintereinander).

Verfasst: 15.06.2005 22:20
von AirTokio
Ohh man! Tut mir ja leid, dass ich die ganzen Codes nicht auswendig kann!
Ich kann ja jetzt nachvollziehn!
Tut mir leid wenn ich mcih schwer mache :(

Aber wir haben es doch jetzt so weit geschafft, könnt ihr mir jetzt nicht noch einmal beim client helfen???

Verfasst: 16.06.2005 00:21
von Kiffi
> könnt ihr mir jetzt nicht noch einmal beim client helfen???

na, ich weiss nicht, wie ich's finden soll, dass Du die Benutzer gleich zweier
Boards (das Pureboard und die Lounge) mit diesem Problem auf Trab hälst.
/:->

Sicherlich ist man hier wie dort gewillt, Dir zu helfen, doch dadurch, dass die
einen Helfer nichts von den anderen wissen verursachst Du unnötige
Mehrarbeit. Das ist so nicht korrekt.

Grüße ... Kiffi