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
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.
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.
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.