Autore Topic: piccolo esempio di TELNET fatto in gambas  (Letto 779 volte)

Offline allegfede

  • Gran Maestro dei Gamberi
  • *****
  • Post: 738
    • Mostra profilo
piccolo esempio di TELNET fatto in gambas
« il: 06 Novembre 2013, 14:09:23 »
in allegato :D

mi serviva per testare un client del mio progetto OTVA , magari vi puo' essere utile.

qui' riporto il codice del main:
Codice: [Seleziona]
' Gambas class file

Private TcpConnection As New Socket As "TcpConnection" 'connessione tcpip ... notare che senza  As "TcpConnection" si connette ma non genera eventi

Public Risposta As String   'e' la stringa che contiene la stringa di ritorno dal server MLT
Public Ritorno As New String[]   'e' il vettore di stringhe che immagazzinanao le righe ritornate dal server telent MLT


Public Sub _new()

End

Public Sub Form_Open()

End

Public Sub TcpConnection_read()

  '****************************************
  ' When some data arrives from the remote
  ' part of the socket, "DataAvailable" event
  ' is raised
  '****************************************

  If TcpConnection.Status = Net.Connected Then
    Read #TcpConnection, Risposta, Lof(TcpConnection)
    Ritorno.Add(risposta)
    Print risposta
  End If
 
End

Public Sub Button_connect_Click()
Dim Stringa As String

  If TcpConnection.Status = Net.Connected Then
    Button_connect.Text = "connect"
    TcpConnection.Close
    Return  'esco dalla procedura senno' rieseguirei il codice sottostante :D
    Else
      TcpConnection.Host = TextBox_hostIP.Text
      TcpConnection.Port = CInt(TextBox_Port.Text)
  Endif

 
  Timer_timeout.Start     'faccio partire il timer del timeout
  Ritorno.Clear           'cancello il vettore delle risposte da parte del server telnet
  TcpConnection.Connect() 'tento di aprire la connessione

  Do
    Wait  'aspetto indefinitamente MA LASCIO CHE GLI EVENTI SI GENERINO
    Print TcpConnection.Status  'stampo lo stato della connessione in consolle di debug
  Loop Until (TcpConnection.Status = Net.Connected) Or (Timer_timeout.Enabled = False)  'attendo fino a che non sono connesso o vado in time out
 
  If TcpConnection.Status = Net.Connected Then
    Button_connect.Text = "disconnect"
   
    'visualizzo la risposta del server
    TextArea_risposta.Clear
   
    Do
      Wait
    Loop Until Ritorno.Count > 0
   
    For Each Stringa In Ritorno
      Stringa = Replace(Stringa, "\r", "")
      Stringa = Replace(Stringa, "\n", "")
      TextArea_risposta.Text = TextArea_risposta.Text & gb.CrLf & Stringa
    Next
    Else
      TcpConnection.Close
  Endif
 
End


Public Sub Timer_timeout_Timer()

  Timer_timeout.Enabled = False

End

Public Sub Button_send_Click()
Dim Comando As String
Dim Stringa As String

  If Button_connect.Text = "connect" Then Return
 
  If TextBox_comando.Text = "" Then Return

  comando = TextBox_comando.Text & "\n\r"
 
  If TcpConnection.Status = Net.Connected Then
    Write #TcpConnection, Comando, Len(Comando)
  End If
 
  'svuoto il vettore di stringhe con la risposta dal server
  Ritorno.Clear
 
  'visualizzo la risposta del server
  TextArea_risposta.Clear
   
  Do
     Wait
  Loop Until Ritorno.Count > 0
   
  For Each Stringa In Ritorno
      Stringa = Replace(Stringa, "\r", "")
      Stringa = Replace(Stringa, "\n", "")
      TextArea_risposta.Text = TextArea_risposta.Text & gb.CrLf & Stringa
  Next
 
End
se corri, morirai stanco (motto degli sniper)

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.720
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: piccolo esempio di TELNET fatto in gambas
« Risposta #1 il: 06 Novembre 2013, 16:38:37 »
Bravo.

Mi sono connesso ad una stampante di rete e le ho fatto stampare, per prova, una parola scritta da me nel TextBox "Comando".  :)
« Ultima modifica: 06 Novembre 2013, 18:00:54 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline allegfede

  • Gran Maestro dei Gamberi
  • *****
  • Post: 738
    • Mostra profilo
Re: piccolo esempio di TELNET fatto in gambas
« Risposta #2 il: 06 Novembre 2013, 18:21:34 »
:D
se corri, morirai stanco (motto degli sniper)

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.720
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: piccolo esempio di TELNET fatto in gambas
« Risposta #3 il: 06 Novembre 2013, 20:22:36 »
Io continuo ad essere del parere che cose come queste andrebbero esposte nella nostra WIKI ! 
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: piccolo esempio di TELNET fatto in gambas
« Risposta #4 il: 07 Novembre 2013, 12:27:46 »
Io continuo ad essere del parere che cose come queste andrebbero esposte nella nostra WIKI ! 

Approvo!  ;)

Offline allegfede

  • Gran Maestro dei Gamberi
  • *****
  • Post: 738
    • Mostra profilo
Re: piccolo esempio di TELNET fatto in gambas
« Risposta #5 il: 15 Novembre 2013, 13:24:23 »
dopo alcuni test mi sono accorto che il dialogo con la mia applicazione target (il server melted per il play dei video) aveva dei problemi.

con alcuni collaboratori abbiamo identificato il bug in questa riga:

Codice: [Seleziona]
comando = TextBox_comando.Text & "\n\r"

che invece deve essere cosi':

Codice: [Seleziona]
comando = TextBox_comando.Text & "\n"
se corri, morirai stanco (motto degli sniper)