【问题标题】:Send and receive Hex String from linux Server C#从 linux 服务器 C# 发送和接收十六进制字符串
【发布时间】: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 交易是需要向服务器发送一个字符串但没有得到响应,需要有这样的响应

realterm

你能帮忙看看代码吗?

【问题讨论】:

  • 你不是在写一个十六进制字符串,你是在写一个字节数组。如果你想像你说的那样写一个十六进制字符串,你需要像string.Join(" ", enviar.Select(b =&gt; string.Format("0x{0:X2}", b))); 这样说,从效率的角度来看,写一个字节数组对我来说比像你描述的那样写一个十六进制字符串更有意义。跨度>
  • 备份一下。你需要一个消息计划。看到这个explanation

标签: c# linux tcp hex


【解决方案1】:

不确定 a) 是否是拼写错误,以及 b) 您如何确定没有收到回复
也就是说: 如果您是通过控制台输出说的,请检查此行:

Console.Write(Convert.ToString(bit[0]));

我认为应该是:

Console.Write(Convert.ToString(bit[a]));

(另外 - 将字节命名为“位”有点误导 - 不是双关语)

【讨论】:

    猜你喜欢
    • 2019-02-21
    • 2017-08-27
    • 1970-01-01
    • 2023-03-19
    • 2013-06-07
    • 2012-06-03
    • 1970-01-01
    • 2018-01-31
    • 2019-07-27
    相关资源
    最近更新 更多