2017-03-02 13 views
-2

Linuxサーバに接続するc#で開発している小さなソフトウェアです。ソフトウェアはHEX Stringを送信し、HEX String Backを受信します。 は、ここに私のコードですLinuxサーバとのHex文字列の送受信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

あなたはバイト配列を書いています。あなたが言うように16進文字列を書こうとするなら、 'string.Join(" "、enviar.Select(b => string.Format(" 0x {0:X2} "、b))のような何かをする必要があります) ; 'つまり、バイト配列を書くことは、あなたのように16進文字列を書くより効率的な立場から私にとってより意味があると言われています。 – itsme86

+0

少しバックアップしてください。メッセージプランが必要です。この[説明](http://stackoverflow.com/a/8028242/2226988)を参照してください。 –

答えて

0

それはタイプミスだと、b)あなたが決定しているか、あなたが言った返事
取得していないa)の場合はわからない: をあなたはこの行を調べて、コンソール出力でそれを言っている場合:

を Console.Write(Convert.ToString(ビット[]));

私はそれがあるべきであると信じて:

Console.Write(Convert.ToString(ビット[]))。

(また、「ビット」という名前のビットは誤解を招くものではありません)

関連する問題