c# - 响应大小未知时通过 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 字节或更小,这可以正常工作,但如果我不知道响应大小会怎样?接收大型响应或处理返回的字节数组未知的情况是否有最佳实践?
解决方案
这可能是一个非常简单的答案,但是将任意变量作为大小的“字节”是没有意义的。然后,当您处理响应时,该变量每次都会在数组初始化之前被分配一个新值?
推荐阅读
- java - Java DecimalFormat 舍入问题(一致性问题)
- python - 带有 elif 语句的 Python“TabError:”
- kubernetes - 我可以在 Ingress 配置中同时使用 http 和 https 吗?
- java - 如何修复严重:项目清理后为 servlet 分配异常?
- javascript - 将 JSON 数据发布到具有隐藏字段的 MVC 控制器时的绑定参数问题
- r - 使用发布包将 Cox 回归结果导出到 excel 或 word
- c - 无法弄清楚 printf 语句
- java - 未触发 Android 通知
- c# - 如何更新 Y 轴标题的值?
- wildcard - DataFactory 在使用通配符时多次复制文件