使用vb.net通过以太网与机器建立TCP连接

时间:2016-02-18 10:34:19

标签: vb.net sockets tcp-ip

我想使用vb.net制作一个简单的formapp来将ASCII字符串发送到一台机器,该机器在每个命令后响应。即,如果我发送" AA"它响应" 123"。

我已经可以打开连接原因如果我检查与超级终端的连接,它说该端口已被使用。然而,当我发送命令时,我没有回复。

我有点使用tcp修改了服务器/客户端聊天的模板代码:

Imports System.Net.Sockets
Imports System.Threading 

Dim Listener As New TcpListener(65535)
Dim Client As New TcpClient
Dim Message As String = "

Private Sub Timer1_Tick(ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles Timer1.Tick
If Listener.Pending = True Then
    Message = ""
Client = Listener.AcceptTcpClient()

Dim Reader As New StreamReader(Client.GetStream())
While Reader.Peek > -1
    Message = Message + Convert.ToChar(Reader.Read()).ToString
End While
RichTextBox1.ForeColor = Color.Black
RichTextBox1.Text += Message + vbCrLf
End Sub

Private Sub btnSend_Click(ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles btnSend.Click
If txtName.Text = "" Or cmbAddress.Text = "" Then
    MessageBox.Show("All Fields must be Filled", _
                    "Error", _
                    MessageBoxButtons.OK, MessageBoxIcon.Error)
Else
    Try
        Client = New TcpClient(cmbAddress.Text, 65535)

        Dim Writer As New StreamWriter(Client.GetStream())
        Writer.Write(txtName.Text & " Says:  " & txtmessage.Text)
        Writer.Flush()

        RichTextBox1.Text += (txtName.Text & " Says:  " & txtmessage.Text) + vbCrLf
        txtmessage.Text = ""
    Catch ex As Exception
        Console.WriteLine(ex)
        Dim Errorresult As String = ex.Message
        MessageBox.Show(Errorresult & vbCrLf & vbCrLf & _
                        "Please Review Client Address", _
                        "Error Sending Message", _
                        MessageBoxButtons.OK, MessageBoxIcon.Error)
    End Try

End If
End Sub

有没有更好的方法来做到这一点?我读到了关于.net.sockets的内容,但是我可以摆脱这个问题。

并且手册没有说明机器的运行方式。如果它是客户端,服务器,主机..有人可以帮助我吗?谢谢 !

1 个答案:

答案 0 :(得分:0)

Imports System.Net
Imports System.Net.Sockets
Imports System.Text.UTF7Encoding
Public Class Form1
Dim open As TcpListener
Dim server As TcpListener
Dim client, host As TcpClient
Dim dati, hdat As NetworkStream
Dim ip As String = Nothing
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    ip = TextBox1.Text
    client = New TcpClient
    client.Connect(ip, 2101)
    If client.Connected = True Then
        dati = client.GetStream
        MsgBox("Connected", MsgBoxStyle.Information)
        Button1.Enabled = False
        Timer1.Start()
    Else
        MsgBox("Error", MsgBoxStyle.Critical)

    End If
End Sub

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    If client.Available > 0 Then
        Dim t(client.Available - 1) As Byte
        dati.Read(t, 0, t.Length)
        Dim testo As String = UTF7.GetString(t)
        RichTextBox1.Text += vbCrLf & "server : " & testo & vbCrLf
    End If
End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    Dim t() As Byte = UTF7.GetBytes(TextBox2.Text & vbCrLf)
    dati.Write(t, 0, t.Length)
    RichTextBox1.Text += vbCrLf & TextBox2.Text & vbCrLf
End Sub
End Class