1

我在 c# 中的应用程序想要与第 3 方 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 回答