【发布时间】:2017-07-22 17:55:32
【问题描述】:
我正在用 c# 开发一个连接到 Linux 服务器的小软件。软件发送一个 HEX 字符串并接收一个 HEX 字符串返回。 这是我的代码
static void Main(string[] args)
{
TcpClient tcpclient = new TcpClient();
tcpclient.Connect("192.168.0.100",9010);
string msg = Console.ReadLine();
Stream stream = tcpclient.GetStream();
ASCIIEncoding ascii = new ASCIIEncoding();
byte[] enviar = ascii.GetBytes(msg);
stream.Write(enviar, 0, enviar.Length);
byte[] bit = new byte[255];
int i = stream.Read(bit, 0,255);
for (int a = 0; a < i; a++ ) {
Console.Write(Convert.ToString(bit[0]));
}
tcpclient.Close();
}
一个字符串的例子是0x30 0x30 0x30 0x30 0x30 0x30 0x30 0x34 0x03 0x30 0x30 0x30,响应是这个30 30 30 30 30 30 33 33 60 60 60 60 FF FF FF FF FF FF FF FF FF FF FF FF
FF FF 01
交易是需要向服务器发送一个字符串但没有得到响应,需要有这样的响应
你能帮忙看看代码吗?
【问题讨论】:
-
你不是在写一个十六进制字符串,你是在写一个字节数组。如果你想像你说的那样写一个十六进制字符串,你需要像
string.Join(" ", enviar.Select(b => string.Format("0x{0:X2}", b)));这样说,从效率的角度来看,写一个字节数组对我来说比像你描述的那样写一个十六进制字符串更有意义。跨度> -
备份一下。你需要一个消息计划。看到这个explanation。