开发客户端以将信息发送到特定服务器。并且服务器仅接受来自客户端的特定数据。数据为“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的情况下以十六进制发送数据,那就没关系
非常感谢您的善意考虑!
答案 0 :(得分:1)
如果您需要将String作为文本发送而不是十六进制,则SYN字符将转换为char 22.请参阅ASCII table中的DEC / Decimal列。
尝试这样做:
Encoding.ASCII.GetBytes(ChrW(22) & "10000200ü")
否则,如果必须以HEX格式发送,只需按原样发送十六进制字符串:
Encoding.Default.GetBytes("163130303030323030fc")