Esto no está funcionando para mí cuando me conecto a mi solaris cuadro

El servidor envía de vuelta

??%

¿alguien sabe qué estoy haciendo mal

Imports System.Net
    Imports System.Net.Sockets
    Imports System.Text

    Public Class TelnetClient

        Private _hostname As String = "myserver"
        Private _username As String = "user"
        Private _password As String = "pass"

        Private _port As Integer = 23
        Private _client As TcpClient
        Private _data As String

        Private _sendbuffer(128) As Byte
        Private _readbuffer(128) As Byte
        Private _bytecount As Integer

        Private _stream As NetworkStream

        Private Sub Send(ByVal Text As String)
            _sendbuffer = Encoding.ASCII.GetBytes(Text)
            _stream.Write(_sendbuffer, 0, _sendbuffer.Length)
        End Sub

        Private Sub Read()
            _bytecount = _stream.Read(_readbuffer, 0, _readbuffer.Length)
            _data = Encoding.ASCII.GetString(_readbuffer)
        End Sub

        Public Sub Connect()

            _client = New TcpClient(_hostname, _port)

            _stream = _client.GetStream

            Send(_username)
            Read()

            MsgBox(_data)

            Send(_password)
            Read()

            _stream.Close()

            _client.Close()





        End Sub

    End Class
InformationsquelleAutor PeanutPower | 2010-08-18

3 Comentarios

  1. 1

    La? % de que usted está recibiendo desde el servidor es parte de la Telnet opciones de negociación. Usted necesita para hacer las opciones de negociación antes que cualquier otro medio de comunicación puede tener lugar.

  2. 0

    El método Read() en el código anterior es la decodificación de toda la _readbuffer cuando _stream.Leer() sólo puede llenar la parte de la memoria intermedia. _bytecount le indica la cantidad de bytes que puede decodificar.

    Puedo sugerir el uso de un StreamReader. El StreamReader.ReadLine() el método se bloqueará hasta que una nueva línea se recibió y le dará una cadena.

    • No estoy seguro si este es el problema, como he tratado de utilizar la encuesta y leer whats disponible en un temporizador, pero esto le da la misma respuesta desde el servidor. ¿Existe algún protocolo que me falta?
  3. 0

    Usted está consiguiendo porque usted está tratando de traducir los datos en bruto antes de su recogida. Usted necesita agregar un sobre de 2 segundo de sueño entre la comunicación entre telnet funciones.

    Public Sub Connect()
    
            _client = New TcpClient(_hostname, _port)
    
            _stream = _client.GetStream
    
            Threading.Thread.Sleep(2000)
    
            Send(_username)
            Threading.Thread.Sleep(2000)
            Read()
    
            MsgBox(_data)
    
            Send(_password)
            Threading.Thread.Sleep(2000)
            Read()
    
            _stream.Close()
    
            _client.Close()

Dejar respuesta

Please enter your comment!
Please enter your name here