Seite 2 von 2

Verfasst: 14.06.2009 18:00
von Andesdaf
> habe ich ausprobiert, hat bei mir nicht funktioniert. wenn ich das so mach wie gesagt dann öffnet sich die ganz normale hilfe
Öffnet ein F1 auf ButtonGadget() nicht die Hilfe für ButtonGadget()?
Natürlich muss der Befehl auch eine native PB-Funktion sein ansonsten geht
das vorerst nicht.

Verfasst: 14.06.2009 18:05
von Jume

Code: Alles auswählen

If InitNetwork() = 0 
  MessageRequester("Error", "Error") 
EndIf 
ip$ = InputRequester("","bitte server ip eingeben!","") 
Debug ip$ 
ConnectionID = OpenNetworkConnection(ip$, 6654) 
If ConnectionID 
  OpenConsole() 
  PrintN("Erfolgreich zum server Verbunden") 
  String$ = InputRequester("","String zum versenden eingeben","") 
  If String$ 
    SendNetworkData(ConnectionID, @String$, Len(String$)) 
  EndIf 
  Input() 
Else 
  Debug "error" 
EndIf 

End 
Das ist der Client, wie kann ich es machen das der Server bspw. den Befehl "info" bekommt und anschließend einen text ausgibt?

den server code kennt ihr ja.

bin sehr dankbar für die bisherige hilfe.

Verfasst: 14.06.2009 18:10
von jojo1541
auf Serverseite in den Codeteil zum Empfangen von Daten musst du folgendes ergänzen:

Code: Alles auswählen

    Case 2
        length.l = ReceiveNetworkData(ClientID, *buffer, 2000)
        String$ = PeekS(*buffer, 2000)
          If string$ = "info"
             ;Gib Text aus
          EndIf
    EndSelect  

Verfasst: 14.06.2009 18:23
von Jume
genauso habe ich das auch gehandhabt aber irgendwie hat er nichts geschrieben.

Verfasst: 14.06.2009 18:25
von Andesdaf
Jume hat geschrieben:genauso habe ich das auch gehandhabt aber irgendwie hat er nichts geschrieben.
Kann ja alles sein aber ohne handfesten Code kann dir Keiner helfen.

Verfasst: 14.06.2009 18:26
von Jume
ah,

ich habe das problem gefunden.

wenn ich den text einfach über die konsole laufen lass funktioniert es. versuch ich jedoch den text über den server zu verschicken, quasi übers "netz" dann funktioniert es nicht.

könntest du das ganze nochmal so abändern das der client das ganze auch empfangen kann ?

Verfasst: 14.06.2009 19:56
von Jume
könnte jemand den clienten so umbauen das er genauso wie der server texte empfangen kann ?

Verfasst: 14.06.2009 20:15
von jojo1541
kleinen Moment, ich bastel kurz was.

Edit: Sooooo hier mal ein modifizierter Client:

Code: Alles auswählen

If InitNetwork() = 0
  MessageRequester("Error", "Error")
EndIf

ip$ = InputRequester("","bitte server ip eingeben!","")
Debug ip$

ConnectionID = OpenNetworkConnection(ip$, 6654)

If ConnectionID

  *buffer = AllocateMemory(2048)

  OpenConsole()
  
  PrintN("Erfolgreich zum server Verbunden")
  PrintN("fuer Eingabemodus bitte "+Chr(34)+"T"+Chr(34)+"druecken.")
  
  Repeat
   
   Select NetworkClientEvent(ConnectionID)
   
    Case  2  ; Wenn Rohdaten ankommen
      ReceiveNetworkData(ConnectionID,*buffer,2048)
      string$ = PeekS(*buffer,2048)
        PrintN("String erhalten")
        Print("Inhalt: ")
        PrintN(string$)
        PrintN("")     
   EndSelect
   
   inkey$ = Inkey()
    
   If Inkey$ = "t" ; Wenn Inkey t ist, dann wird der Textmodus aktiviert.
     textmode = 1
   EndIf
   
   If textmode = 1 ; Textmode
      inkey$ = "0" 
      PrintN("fuer normalen Modus bitte "+Chr(34)+"zurueck"+Chr(34)+" eingeben")
      PrintN("")
      input$ = Input()
      
      If input$ = "sendstring" ;String senden 
        String$ = InputRequester("","String zum versenden eingeben","")
        If String$
          SendNetworkData(ConnectionID, @String$, Len(String$))
        EndIf
      EndIf
      
      If input$ = "zurueck"       ; Auf Normalmodus zurückwechseln !!!WICHTIG!!!: zum empfangen eines Strings
        EnableGraphicalConsole(1) ; muss der Server/Client im Normalmodus sein, da Input() den Programmablauf pausiert,   
        ClearConsole()            ; bis eine Eingabe gemacht wurde.
        EnableGraphicalConsole(0)
        PrintN("fuer Eingabemodus bitte "+Chr(34)+"T"+Chr(34)+"druecken.")
        PrintN("")
        textmode = 0
      EndIf
      
      If input$ = "cls" ; Konsole leeren
        EnableGraphicalConsole(1)
        ClearConsole()
        EnableGraphicalConsole(0)
      EndIf  
   EndIf  
   
  Delay(10)
  
  Until input$ = "exit" ;beenden   
Else
  Debug "error"
EndIf

FreeMemory(*buffer)

End 
Und ein modifizierter Server:

Code: Alles auswählen

InitNetwork()
If ExamineIPAddresses()
  IP.l = NextIPAddress()
EndIf
*buffer = AllocateMemory(2000)
If CreateNetworkServer(0, 6654)
  OpenConsole()
  PrintN("Server Online Listening on IP (" + IPString(IP) + ")")
  Repeat
    Select NetworkServerEvent()
      Case 0
        If Left(Inkey(), 1) = Chr(13)
          Quit = 1
        EndIf
        Delay(5)
      Case 1
        PrintN("Ein neuer Client hat Connectet")
        ClientID.l = EventClient()
      Case 2
        length.l = ReceiveNetworkData(ClientID, *buffer, 2000)
        String$ = PeekS(*buffer, 2000)
        PrintN("Received:" + String$)
    EndSelect 
    
    inkey$ = Inkey()
    
    If Inkey$ = "t"
      textmode = 1
      inkey$ = "0"
    EndIf
    
    If textmode = 1
      inkey$ = "0" 
      PrintN("fuer normalen Modus bitte "+Chr(34)+"zurueck"+Chr(34)+" eingeben")
      PrintN("")  
      
      input$ = Input()
      
      If input$ = "sendstring"
        String$ = InputRequester("","String zum versenden eingeben","")
        If String$
          SendNetworkData(ClientID, @String$, Len(String$))
        EndIf
      EndIf
      
      If input$ = "zurueck"
        EnableGraphicalConsole(1)  
        ClearConsole()          
        EnableGraphicalConsole(0)
        PrintN("fuer Eingabemodus bitte "+Chr(34)+"T"+Chr(34)+"druecken.")
        PrintN("")
        textmode = 0
      EndIf
    EndIf
    Delay(10) 
  Until Quit = 1
EndIf 

Verfasst: 14.06.2009 20:16
von X360 Andy
Ein Chat also ?

Verfasst: 14.06.2009 21:01
von Jume
vielen dank das ist echt seeehr neett =)))))