接收字符串作为内存流和编码后,会添加更多字符

问题描述 投票:1回答:1

我构建了一个应用程序,通过下面的代码接收和发送数据给服务器,我注意到当我收到字符串时,它正在添加一些字符到我发送的字符串MemoryStream。这是代码和调试信息:

客户:

            while (true)
            {
                if (stream.DataAvailable)
                {
                    while ((i = stream.Read(ByteBuffer, 0, ByteBuffer.Length)) != 0)
                    {
                        ms.Write(ByteBuffer, 0, ByteBuffer.Length);
                        if (stream.DataAvailable)
                            continue;
                        else
                            break;
                    }
                    ToReturn = Encoding.ASCII.GetString(ms.ToArray());

                    return ToReturn;
                }
            }
        }

服务器:

            MemoryStream response = new MemoryStream();
            response = Protocol.ProcessRequest(dataRecieved, ClientAddr);
            #endregion
            Console.WriteLine("Trying to send back response." + Encoding.ASCII.GetString(response.ToArray()));
            stream.Flush();
            response.WriteTo(stream);

我已经检查过调试器以及用控制台打印的内容:发送的信息很好,例如:response.Id^Name^Type^SubType^Description^AddedBy^AddedDT^IsSpecial^Amount@1^VGA cable^cable^display^Very old and common display cable.^Aviv^14/01/2019 22:04:34^False^3345@2^HDMI cable^cable^display^newer and better display cable. can pass network, audio and info.^Aviv^14/01/2019 22:05:30^False^4793

但是在套接字(客户端)另一端收到的信息是:Id^Name^Type^SubType^Description^AddedBy^AddedDT^IsSpecial^Amount@1^VGA cable^cable^display^Very old and common display cable.^Aviv^14/01/2019 22:04:34^False^3345@2^HDMI cable^cable^display^newer and better display cable. can pass network, audio and info.^Aviv^14/01/2019 22:05:30^False^4793alse^4

- 这些(alse^4)最后几个字符。任何人都可以告诉我什么是编码问题?谢谢。

再次:服务器的输出很好

c# .net sockets encoding memorystream
1个回答
2
投票
//ms.Write(ByteBuffer, 0, ByteBuffer.Length);
  ms.Write(ByteBuffer, 0, i);
© www.soinside.com 2019 - 2024. All rights reserved.