gpt4 book ai didi

c# - TCP 上的字节 [256] 限制为 5 个字符

转载 作者:太空狗 更新时间:2023-10-29 23:22:55 26 4
gpt4 key购买 nike

我在使用 .NET 3.5 (C#) 编写的 TCP 服务器\客户端时遇到问题。

每当我使用下面的代码传输数据时,只有 5 个字符传输到服务器。如何修复我的代码,以便传输超过 5 个字符?

TcpClient client = new TcpClient(connectto.ToString(), portto);
Stream s = client.GetStream();
StreamReader sr = new StreamReader(s);
StreamWriter sw = new StreamWriter(s);

Byte[] data = new Byte[256];
data = System.Text.Encoding.ASCII.GetBytes("auth:" + adminPASS.Text);

s.Write(data, 0, data.Length);

data = new Byte[256];

String responseData = String.Empty;

Int32 bytes = s.Read(data, 0, data.Length);
responseData = System.Text.Encoding.ASCII.GetString(data, 0, bytes);

服务器只获取传输内容的前 5 个字符。其余的都丢失了。

最佳答案

Stream.Read可以返回比请求更少的字节,因此您需要在循环中调用它直到到达 EOF,如下所示:

int bytes;
int offset = 0;

while ((bytes = s.Read(data, offset, data.Length - offset) != 0)
{
offset += bytes;
}

此外,您永远不会Dispose() 您的流,因此它们很可能不会被刷新。使用using statement围绕所有 IDisposable 对象。

关于c# - TCP 上的字节 [256] 限制为 5 个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22366153/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com