我正在使用TcpClient并将我的应用程序连接到服务器。这个服务器使用二进制数据序列化,所以我以二进制格式发送请求但得到这样的响应:
有我的代码:
TcpClient client = new TcpClient("173.240.5.1", 443);
NetworkStream stream = client.GetStream();
System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding();
byte[] sendBytes = encoding.GetBytes("YmFzZTY0IGVuY29kZWQgc3RyaW5n");
stream.Write(sendBytes, 0, sendBytes.Length);
byte[] bytes = new byte[client.ReceiveBufferSize];
int response_int = stream.Read(bytes, 0, client.ReceiveBufferSize);
Console.WriteLine(response_int);
请帮助解决问题并抱歉我的英语!
答案 0 :(得分:2)
byte[] bytes = new byte[client.ReceiveBufferSize];
int response_int = stream.Read(bytes, 0, client.ReceiveBufferSize);
和(评论)“我得到了0
回复”。
stream.Read
的返回值是读取的字节数;重点:
因此,如果它返回0,则没有数据。没有收到和套接字已关闭。等待多久并不重要:它永远不会到来。如果不知道如何设置这些套接字,或者服务器正在做什么,我就不能多说了。但是,可以仅在一个方向上关闭插座(任一端都可以这样做)。听起来你连接的服务器已经关闭了它的发送套接字(你的接收套接字)而没有向你发送任何数据。
答案 1 :(得分:0)
响应似乎是用Mime64编写的。整个缓冲区只包含0.似乎你没有响应。你能否在stream.read之前等待(Thread.Sleep(500)
)。请注意,ReceiveBufferSize这是缓冲区大小,但不是收到的字节数