通过TCP / IP发送十六进制十进制

时间:2016-01-01 19:07:11

标签: vb.net hex client-server tcpclient tcp-ip

开发客户端以将信息发送到特定服务器。并且服务器仅接受来自客户端的特定数据。数据为“163130303030323030fc”。我已将其转换为Ascii

  

“SYN10000200ü”

除了“SYN”之外它有效。 “SYN”必须转换为“16”才能实现。但是,当我使用代码Encoding.Default.GetBytes("<SYN>10000200ü")时,结果将作为

接收
  

3c53594e3e3130303030323030fc

代码Im Using Is如下,

  Dim tcpClient As New System.Net.Sockets.TcpClient()
    Try
        tcpClient.Connect("192.168.18.6", 60010)
        Dim networkStream As NetworkStream = tcpClient.GetStream()
        If networkStream.CanWrite And networkStream.CanRead Then




            Dim sendBytes As Byte() = Encoding.Default.GetBytes("<SYN>10000200ü")
            networkStream.Write(sendBytes, 0, sendBytes.Length)

            Do
            Loop Until networkStream.DataAvailable
            Dim bytes(tcpClient.ReceiveBufferSize) As Byte
            networkStream.Read(bytes, 0, CInt(tcpClient.ReceiveBufferSize))
            Dim returndata As String = Encoding.ASCII.GetString(bytes)
            TextBox1.Text &= returndata
            tcpClient.Close()
        Else
            If Not networkStream.CanRead Then
                tcpClient.Close()
            Else
                If Not networkStream.CanWrite Then
                    tcpClient.Close()
                End If
            End If
        End If
    Catch ex As Exception
        MsgBox(ex.ToString)
    End Try

如果有一种方法可以在不使用ascii的情况下以十六进制发送数据,那就没关系 enter image description here

非常感谢您的善意考虑!

1 个答案:

答案 0 :(得分:1)

如果您需要将String作为文本发送而不是十六进制,则SYN字符将转换为char 22.请参阅ASCII table中的DEC / Decimal列。

尝试这样做:

Encoding.ASCII.GetBytes(ChrW(22) & "10000200ü")

否则,如果必须以HEX格式发送,只需按原样发送十六进制字符串:

Encoding.Default.GetBytes("163130303030323030fc")