我在c#中的应用程序想要与第三方Tcp服务器联系以发送数据并收到回复消息...命令的语法包含UShort,ULONG,BYTE类型数据 我的应用程序需要发送的示例命令是
USHORT 0xFFFF
USHORT 0x00D0
BYTE 0xDD
然后在app中我将数据发送为
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..
但返回值不是我要找的 我的代码向服务器发送数据有什么问题吗? 任何关于阅读写作数据的建议都是受欢迎的......
答案 0 :(得分:0)
当他们不知道所采用的协议时,没有人可以告诉你响应有什么问题。服务器正在发送它,因为它感觉像...它可能是您的请求有问题,或者它可能是一条消息,表明它已脱机服务。您只能查看它如何解释它发送的结果的规范,或询问维护它的人。
使用您正在使用的语言标记此问题可能也是个好主意,因此人们可以了解函数调用以及是否正确调用它们。
我还建议使用数据包嗅探器(或在Linux上简单地使用)来显示正在读取和写入的数据包......你可能会看到那里的错误。然后,使用另一个程序与工作的服务器进行交互,并比较字节。