首页 > 解决方案 > 响应大小未知时通过 C# 调用 Node.js 服务

问题描述

我有一些 C# 成功调用我的 TCP 服务(在 Node.js 上运行)并接收响应。我的代码与此类似:

string html = Console.ReadLine();
Byte[] htmlBytes = System.Text.Encoding.ASCII.GetBytes(html);

TcpClient client = new TcpClient("127.0.0.1", 5000);
NetworkStream stream = client.GetStream();
stream.Write(htmlBytes, 0, htmlBytes.Length);
Console.WriteLine("Message has been sent");

Byte[] responseBytes = new Byte[50000];
int numberOfBytes = stream.Read(responseBytes, 0, responseBytes.Length);

我的问题是关于这段代码:

Byte[] responseBytes = new Byte[50000];
int numberOfBytes = stream.Read(responseBytes, 0, responseBytes.Length);

因为responseBytes是通过引用传入的stream.Read(...),所以必须初始化,所以我选择了50000的大小。如果响应超过50000,那么我只收到前50000个字节。

如果我的响应是 50000 字节或更小,这可以正常工作,但如果我不知道响应大小会怎样?接收大型响应或处理返回的字节数组未知的情况是否有最佳实践?

标签: c#servicetcpclient

解决方案


这可能是一个非常简单的答案,但是将任意变量作为大小的“字节”是没有意义的。然后,当您处理响应时,该变量每次都会在数组初始化之前被分配一个新值?


推荐阅读