首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Telnet TcpClient尝试

Telnet TcpClient尝试
EN

Stack Overflow用户
提问于 2015-03-11 13:25:13
回答 1查看 3.1K关注 0票数 0

首先,感谢你帮助我找出Tcpclients的所有人。(虽然还有很多我不明白的地方)

我可以在MSDN.Microsoft表单中看到一个关于Tcpclient的线程。在我尝试Telnet到一个网络交换机,并且知道代码的问题是什么的时候,我尝试了一下,但是没有什么成功。当我收到来自开关的回复时,我绕着我的工作区域跑了一圈,是"******“,但也是我发送的相同数量的字符。

所以现在我的问题是:它真的通过了吗?它提交命令了吗?什么是最好的是发送更多的命令?

冻结的部分是当它试图从开关读取响应时,但是由于我实际上不需要任何响应,所以我可以删除代码的这一部分。

任何反馈、建议、示例或在线阅读材料(顺便说一句,我真的讨厌telnet文档)。我们会非常感激的。

表格代码:

代码语言:javascript
复制
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

我知道我必须重做这段代码,但现在它更多的是获得成功。

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-18 13:24:18

很管用!Sorry...Redbull

我发现我的问题是时间问题,因为我的文本框不够大,无法看到从交换机接收到的数据。

这是一个对我有用的例子。

代码语言:javascript
复制
Imports System.Net.Sockets

Imports System.Text

Public Class Form1

Private oTCPStream As Net.Sockets.NetworkStream

Private oTCP 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

    Try

        TextBox1.Text = ""

        oTCP.SendTimeout = 1500

        oTCP.Connect("IP Address", "23")

        oTCPStream = oTCP.GetStream

        TextBox1.Text = TextBox1.Text & ReadData() & vbCrLf 'Reads data from switch/server and displays it in a textbox

        WriteData("command" & vbCrLf) 'This line can repeated as many times as you like. You just need to adjust the time the application waits before starting the next line of code.

        System.Threading.Thread.Sleep(500) 'Pauses the application before starting the next line of code.

        TextBox1.Text = TextBox1.Text & ReadData() & vbCrLf
oTCPStream.Close() 'Closed the NetworkStream

        oTCP.Close()'Closed the TcpClient/Socket

        MsgBox("connection ok")

    Catch Err As Exception

        MsgBox(Err.ToString)

    End Try

End Sub

Private Function ReadData() As String

    Dim sData As String

    ReDim bytReading(oTCP.ReceiveBufferSize)

    oTCPStream.Read(bytReading, 0, oTCP.ReceiveBufferSize)

    sData = Trim(System.Text.Encoding.ASCII.GetString(bytReading))

    ReadData = sData

End Function

Private Sub WriteData(ByVal sData As String)

    bytWriting = System.Text.Encoding.ASCII.GetBytes(sData)

    oTCPStream.Write(bytWriting, 0, bytWriting.Length)

End Sub
End Class

这主要是针对像我这样正在学习新东西的人。而且,这是我使用的唯一代码。我没有制造服务器应用程序,因为交换机上已经有一个服务器。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28987826

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档