1

C#のアプリケーションは、サードパーティのTcpサーバーと連携して、データを送信し、応答メッセージを受信したいと考えています...コマンドの構文には、UShort、ULONG、BYTEタイプのデータがあり、アプリで送信する必要のあるサンプルコマンドは次のとおりです。

USHORT 0xFFFF
USHORT 0x00D0
BYTE   0xDD

次に、アプリでデータを次のように送信します

  TcpClient tcpClient = new TcpClient();
       tcpClient.Connect("XX.XX.XX.XX",portnumber);

       Networkstream ns=tcpClient.GetStream();
       StreamWriter sw=new StreamWriter(ns);
       sw.Write(0xFFFF);
       sw.Write(0x00DD);
       sw.Write(0x00);

//またはバイトを送信します

     sw.Write(0xFF);
       sw.Write(0xFF);
       sw.Write(0x00);
       sw.Write(0xD0);
       sw.Write(0x00);
       sw.Write(0x00);

そして私はサーバー経由で着信メッセージを次のように読みます

  while (true)
               {

                    byte[] buff=new byte[tcpClient.ReceiveBufferSize];
                    ns.Read(buff, 0, tcpClient.ReceiveBufferSize);
                 string dv= BitConverter.ToString(buff));
                }
//returned data looks like FF-A2-00-23-00-02-00-00-00-00-00-00-D9-2E-20-2E-00-A0-04-00-AE-08
//yes i know this byte syntaxes but returning data is not that i look response for command that i sent..

しかし、戻り値は私が探しているものではありませんサーバーにデータを送信することで私のコードに何か問題がありますか?書き込みデータの読み取りに関する推奨事項は大歓迎です...

4

1 に答える 1

0

採用されているプロトコルがわからない場合、応答の何が問題になっているのかは誰にもわかりません。サーバーはそれを送信しているように感じます...リクエストに問題があるか、サービスがオフラインであることを示すメッセージである可能性があります。あなたはそれが送った結果をどのように解釈するかについての仕様をチェックするか、それを維持する人々に尋ねることしかできません。

この質問に使用している言語でタグを付けることも良い考えです。そうすれば、人々は関数呼び出しと、それらを適切に呼び出しているかどうかを理解できます。

また、パケットスニファ(またはLinuxでは単にstrace)を使用して、読み取りと書き込みが行われているパケットを表示することをお勧めします...おそらくそこに間違いがあります。次に、別のプログラムを使用して、機能するサーバーと対話し、バイトを比較します。

于 2010-09-06T09:14:26.010 に答える