2017-03-02 41 views
-2

我正在开发一个在c#中开发一个连接到Linux服务器的小软件。该软件发送一个HEX字符串并接收一个HEX字符串返回。 这里是我的代码从Linux服务器C发送和接收十六进制字符串#

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

响应你可以给一个手的代码吗?

+1

你不写一个十六进制字符串,你正在写一个字节数组。如果你想像你说的那样写一个十六进制字符串,你需要做一些像'string.Join(“,enviar.Select(b => string.Format(”0x {0:X2}“,b))) ;'也就是说,从效率的角度来看,编写一个字节数组对于我来说更有意义,而不是像描述的​​那样编写一个十六进制字符串。 – itsme86

+0

备份一下。你需要一个消息计划。看到这个[解释](http://stackoverflow.com/a/8028242/2226988)。 –

回答

0

不知道一)如果它是一个错字,和b)你是如何确定你没有得到答复
这就是说: 如果你是说它由控制台输出中,检查这一行:

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

我相信它应该是:

Console.Write(Convert.ToString(位[一个])); (同样 - 命名一个字节“位”有点令人误解 - 没有双关语意思)

相关问题