【发布时间】:2015-05-13 07:32:00
【问题描述】:
首先,感谢大家帮助我尝试找出 Tcpclients。 (虽然还有很多不明白的地方)
我可以跨过 MSDN.Microsoft Forms 中关于 Tcpclient GUI 冻结的线程。在尝试 Telnet 到网络交换机并知道代码有什么问题时,我几乎没有成功,我试了一下。
当我收到来自交换机的回复时,我大约在我的工作区转了一圈,只是“******”,但与我发出的字符数量相同。
所以现在我的问题是: 它真的通过了吗? 它提交命令了吗? 最好发送更多命令?
冻结的部分是当它尝试从开关读取响应时,但由于我实际上不需要任何响应,所以我可以取消这部分代码。
任何反馈、建议、示例或在线阅读材料(顺便说一下,我真的很讨厌 telnet 文档。)将不胜感激。
表单代码:
Imports System.Net
Imports System.Net.Sockets
Imports System.Text
Public Class Form1
Dim tagid As String
Dim tcpClient As New System.Net.Sockets.TcpClient
Dim networkStream As NetworkStream
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
tcpClient.Connect("IP address", 23)
networkStream = tcpClient.GetStream()
MessageBox.Show("connected")
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
If networkStream.CanWrite And networkStream.CanRead Then
Dim sendBytes("String".Length) As Byte
sendBytes = Encoding.ASCII.GetBytes("String")
'I don't really need this part....I think.
Dim x As Integer = 1
Do While x = 1
networkStream.Write(sendBytes, 0, sendBytes.Length)
Dim bytes(tcpClient.ReceiveBufferSize) As Byte
networkStream.Read(bytes, 0, CInt(tcpClient.ReceiveBufferSize))
Dim returndata As String = Encoding.ASCII.GetString(bytes)
TextBox1.Text = returndata
tagid = TextBox1.Text
TextBox1.Refresh()
Loop
Else
If Not networkStream.CanRead Then
Console.WriteLine("cannot not write data to this stream")
tcpClient.Close()
Else
If Not networkStream.CanWrite Then
Console.WriteLine("cannot read data from this stream")
tcpClient.Close()
End If
End If
End If
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
networkStream.Close()
tcpClient.Close()
End Sub
End Class
我知道我必须重新编写这段代码,但现在更重要的是获得成功。
谢谢。
【问题讨论】: