Telnet Client

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
kreeph
Beiträge: 98
Registriert: 24.02.2007 11:50

Beitrag von kreeph »

ok danke, habs ausprobiert aber musste ein paar sachen entfernen, damit der code funktioniert hat. :?
jetzt hat es geklappt (glaub ich zumindest) aber der server antwortete mir nicht...
ich glaube ich kann den code einfach nicht richtig umformen. könnt ihr mir helfen?:coderselixir:
bitte und danke schonmal !
kreeph
Ich benutze PureBasic 3.30
Benutzeravatar
tobe
Beiträge: 146
Registriert: 14.09.2006 17:33
Wohnort: Oktoberfest

Beitrag von tobe »

wenn du deine umgeformte version postest kann ich dir sagen woran es scheitert ;)
hier nochmal eine veränderte version von mir:

Code: Alles auswählen

CRLF$ = Chr(13) + Chr(10) 
Procedure Receive(ClientID.l)
  mem$ = Space($FFFF)
  PrintN(PeekS(@mem$, ReceiveNetworkData(ClientID, @mem$, $FFFF)))
EndProcedure 

OpenConsole()
If InitNetwork()
  Print("Ip vom TS server: ")
  ip$ = Input()
  PrintN("verbinde mit " + ip$ + ":51234")
  ServerID.l = OpenNetworkConnection(ip$, 51234)
  If ServerID = 0
    PrintN("fehler beim verbindungsaufbau mit " + ip$)
    Input()
    End
  EndIf
  Receive(ServerID)
  PrintN("sende help")
  SendNetworkString(ServerID, "help" + CRLF$)
  Receive(ServerID)
  Repeat
    input$ = Input()
    If input$
      SendNetworkString(ServerID, input$ + CRLF$)
      Receive(ServerID)
    EndIf
  Until LCase(input$) = "quit"
EndIf
End
PureBasic 4.40 (Windows - x86)
Benutzeravatar
kreeph
Beiträge: 98
Registriert: 24.02.2007 11:50

Beitrag von kreeph »

der code scheint zu funktionieren aber nachdem ich erfolgreich den server kontaktiert habe, stürzt das programm ab
Ich benutze PureBasic 3.30
Benutzeravatar
tobe
Beiträge: 146
Registriert: 14.09.2006 17:33
Wohnort: Oktoberfest

Beitrag von tobe »

hmm, abstürzen sollte es nicht ;)
ich hab das mit meinem TS server im lan getestet, kein plan wie sich das bei einem server im internet verhält, aber es sollte ja auch nur ein beispiel sein wie es ungefähr geht ;)
PureBasic 4.40 (Windows - x86)
Benutzeravatar
kreeph
Beiträge: 98
Registriert: 24.02.2007 11:50

Beitrag von kreeph »

vielleicht stürzt der code halt in 3.30 ab. also iss es warscheinlich immer noch nich ganz richtig :(
Ich benutze PureBasic 3.30
Benutzeravatar
tobe
Beiträge: 146
Registriert: 14.09.2006 17:33
Wohnort: Oktoberfest

Beitrag von tobe »

jetzt hab ich mal meine erste PB version ausgepackt und da stürzt der code auch ab ;)
der code müsste bei dir jetzt auch laufen:

Code: Alles auswählen

#MEM = 5000
Global Quit

Procedure PrintText(text$)
  StartPosition = 1
  Repeat
    EndPosition = FindString(text$, Chr(13), StartPosition)
    If EndPosition
      PrintN(Mid(text$, StartPosition, EndPosition - StartPosition))
      StartPosition = EndPosition + 2
    Else
      len = Len(text$) - StartPosition + 1
      If len > 0
        Print(Mid(text$, StartPosition, len))
      EndIf
    EndIf
  Until EndPosition = 0
EndProcedure

Procedure Receive(ConnectionID.l)
  mem = AllocateMemory(0, #MEM, 0)
  Repeat
    If NetworkClientEvent(ConnectionID)
      size = ReceiveNetworkData(ConnectionID, mem, #MEM)
      PrintText(PeekS(mem, size))
    Else
      Delay(30)      
    EndIf
  Until Quit
  FreeMemory(0)
EndProcedure

OpenConsole()
If InitNetwork()
  Print("Ip vom TS server: ")
  ip$ = Input()
  PrintN("")
  PrintN("Verbinde mit " + ip$ + ":51234")
  ConnectionID.l = OpenNetworkConnection(ip$, 51234)
  If ConnectionID = 0
    PrintN("Fehler beim Verbindungsaufbau mit " + ip$)
    Input()
    End
  EndIf
  ThreadID = CreateThread(@Receive(), ConnectionID)
  Repeat
    input$ = Input()
    If input$
      PrintN("")
      SendNetworkString(ConnectionID, input$ + Chr(13) + Chr(10))
    Else
      PrintN("help fuer befehlsliste oder quit zum beenden")
    EndIf
  Until LCase(input$) = "quit"
  Quit = 1
  WaitThread(ThreadID)
  CloseNetworkConnection(ConnectionID)
EndIf
End
mfG
tobe
PureBasic 4.40 (Windows - x86)
Benutzeravatar
kreeph
Beiträge: 98
Registriert: 24.02.2007 11:50

Beitrag von kreeph »

wow, danke es funzt jetzt
hab die zweite seite erst übersehen :oops:
:allright:
Ich benutze PureBasic 3.30
Antworten