Client - Vorlage

Anfängerfragen zum Programmieren mit PureBasic.
Andesdaf
Moderator
Beiträge: 2673
Registriert: 15.06.2008 18:22
Wohnort: Dresden

Beitrag 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.
Win11 x64 | PB 6.20
Jume

Beitrag 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.
Benutzeravatar
jojo1541
Beiträge: 431
Registriert: 15.09.2007 17:12
Wohnort: Irgendwo im Nirgendwo

Beitrag 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  
Ich verkaufe Rechtschreibfehler und jede menge GROßBUCHSTABEN. Alles unbegrenzt zu haben.
Jume

Beitrag von Jume »

genauso habe ich das auch gehandhabt aber irgendwie hat er nichts geschrieben.
Andesdaf
Moderator
Beiträge: 2673
Registriert: 15.06.2008 18:22
Wohnort: Dresden

Beitrag 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.
Win11 x64 | PB 6.20
Jume

Beitrag 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 ?
Jume

Beitrag von Jume »

könnte jemand den clienten so umbauen das er genauso wie der server texte empfangen kann ?
Benutzeravatar
jojo1541
Beiträge: 431
Registriert: 15.09.2007 17:12
Wohnort: Irgendwo im Nirgendwo

Beitrag 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 
Zuletzt geändert von jojo1541 am 14.06.2009 20:59, insgesamt 1-mal geändert.
Ich verkaufe Rechtschreibfehler und jede menge GROßBUCHSTABEN. Alles unbegrenzt zu haben.
Benutzeravatar
X360 Andy
Beiträge: 1206
Registriert: 11.05.2008 00:22
Wohnort: Bodensee
Kontaktdaten:

Beitrag von X360 Andy »

Ein Chat also ?
Jume

Beitrag von Jume »

vielen dank das ist echt seeehr neett =)))))
Antworten