Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在接收字符串作为内存流并进行编码之后,添加更多的字符_C#_.net_Sockets_Encoding_Memorystream - Fatal编程技术网

C# 在接收字符串作为内存流并进行编码之后,添加更多的字符

C# 在接收字符串作为内存流并进行编码之后,添加更多的字符,c#,.net,sockets,encoding,memorystream,C#,.net,Sockets,Encoding,Memorystream,我构建了一个应用程序,它通过下面的代码接收数据并将数据发送到服务器,我注意到当我取回字符串时,它向我作为MemoryStream发送的字符串添加了一些字符。以下是代码和调试信息: 客户: while (true) { if (stream.DataAvailable) { while ((i = stream.Read(ByteBuffer, 0

我构建了一个应用程序,它通过下面的代码接收数据并将数据发送到服务器,我注意到当我取回字符串时,它向我作为
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^addedtt^IsSpecial^Amount@1^VGA电缆^cable^显示器^非常旧的普通显示器电缆。^Aviv^14/01/2019 22:04:34^错误^3345@2^HDMI电缆^电缆^显示器^更新更好的显示器电缆。可以传递网络、音频和信息。^Aviv^14/01/2019 22:05:30^False^4793

但是在套接字的另一端(客户端)接收到的信息是:
Id^名称^Type^子类型^Description^由^addddt^添加的说明是特殊的^Amount@1^VGA电缆^cable^显示器^非常旧的普通显示器电缆。^Aviv^14/01/2019 22:04:34^错误^3345@2^HDMI电缆^电缆^显示器^更新更好的显示器电缆。可以传递网络、音频和信息。^Aviv^14/01/2019 22:05:30^False^4793alse^4

-有了这些(
alse^4
)字符,最后只剩下几个字符。谁能告诉我编码有什么问题吗?谢谢


再次说明:服务器的输出正常

谢谢!解释?应该很清楚。你读了多少字节,你想写多少字节?这些数字在您的代码中没有关联。谢谢。。抱歉这么笨。请使用有意义的名称,例如:
i
->
bytesRead
。这有助于防止此类错误。但我想也有一个警告,“分配给我的值永远不会被使用。”不要忽略警告。谢谢,我会做的。
//ms.Write(ByteBuffer, 0, ByteBuffer.Length);
  ms.Write(ByteBuffer, 0, i);