2012年12月11日 星期二
Telnet ... 簡單的寫法
Private T_Stream As Net.Sockets.NetworkStream
Private T_Client As New Net.Sockets.TcpClient()
Private bytWriting As [Byte]()
Private bytReading As Byte()
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
T_Client.SendTimeout = 1500
T_Client.Connect("主機IP", "23")
T_Stream = T_Client.GetStream
System.Threading.Thread.Sleep(1500) ' 暫停一下等主機回應
TextBox1.Text = TextBox1.Text & ReadData() & vbCrLf ' 取得回應的資料
WriteData("帳號指令等" & vbCrLf) ' 輸入 ... 重複 WriteData ReadData 就跟用 Telnet 一樣
System.Threading.Thread.Sleep(500)
TextBox1.Text = TextBox1.Text & ReadData() & vbCrLf
T_Stream.Close()
T_Client.Close()
End Sub
Private Function ReadData() As String
Dim sData As String
ReDim bytReading(T_Client.ReceiveBufferSize)
T_Stream.Read(bytReading, 0, T_Client.ReceiveBufferSize)
sData = Trim(System.Text.Encoding.Default.GetString(bytReading))
ReadData = sData
End Function
Private Sub WriteData(ByVal sData As String)
bytWriting = System.Text.Encoding.Default.GetBytes(sData)
T_Stream.Write(bytWriting, 0, bytWriting.Length)
End Sub
備註:如果回傳的資料過大,可能會漏掉部份內容,
因為 ReceiveBufferSize 預設為 8192,
可於 ReadData() 增加下列語法,加大 BufferSize
T_Client..ReceiveBufferSize = xxxxxx