通过 TCP/IP 发送十六进制十进制
Send Hex Decimal over TCP / IP
我正在开发客户端以将信息发送到特定服务器。服务器只接受来自客户端的特定数据。数据是“163130303030323030fc”。我已将其转换为 Ascii 为
"SYN10000200ü"
除 "SYN" 外都有效。 "SYN" 必须转换为“16”才能实现。但是当我使用代码 Encoding.Default.GetBytes("<SYN>10000200ü")
时,结果收到
3c53594e3e3130303030323030fc
我使用的代码如下,
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 的情况下以十六进制发送数据就可以了
非常感谢您的考虑!
如果您需要将字符串作为文本而非十六进制发送,SYN-character 将转换为 char 22。请参阅 ASCII table 中的 DEC/Decimal 列。
尝试这样做:
Encoding.ASCII.GetBytes(ChrW(22) & "10000200ü")
否则,如果必须以十六进制发送,只需按原样发送十六进制字符串即可:
Encoding.Default.GetBytes("163130303030323030fc")
我正在开发客户端以将信息发送到特定服务器。服务器只接受来自客户端的特定数据。数据是“163130303030323030fc”。我已将其转换为 Ascii 为
"SYN10000200ü"
除 "SYN" 外都有效。 "SYN" 必须转换为“16”才能实现。但是当我使用代码 Encoding.Default.GetBytes("<SYN>10000200ü")
时,结果收到
3c53594e3e3130303030323030fc
我使用的代码如下,
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 的情况下以十六进制发送数据就可以了
非常感谢您的考虑!
如果您需要将字符串作为文本而非十六进制发送,SYN-character 将转换为 char 22。请参阅 ASCII table 中的 DEC/Decimal 列。
尝试这样做:
Encoding.ASCII.GetBytes(ChrW(22) & "10000200ü")
否则,如果必须以十六进制发送,只需按原样发送十六进制字符串即可:
Encoding.Default.GetBytes("163130303030323030fc")