gpt4 book ai didi

c# - 通过网络流发送字节,值发生变化

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:25:14 24 4
gpt4 key购买 nike

模糊的标题,但我无法在标题中真正解释我的问题,因为我自己也没有完全理解这个问题。

基本上,我在我的客户端中通过网络流发送数据:

像这样:

int id = 0x00FEED00;

byte[] idBytes = BitConvertor.GetBytes(id);

if (BitConverter.IsLittleEndian == true)
{
Array.Reverse(bytes, 0, bytes.Length);
}

//the TcpClient and Network stream (GetStream) is initialised in my constructor
str.Write(idBytes, 0, idBytes.Length);
str.Flush();
stream.Close();

所以 idBytes 在发送时包含 {0, 254, 237, 0}。但是在服务器端,当我收到它时,它变为 {0, 253, 253, 0}。

这是我的服务器代码:

NetworkStream stream = client.GetStream();
StreamReader sr= new StreamReader(stream);
StreamWriter sw= new StreamWriter(stream);

List<byte> msg = new List<byte>();

int numBytes= 0;
while (reader.Peek() > -1)
{
try
{
int curr = sr.Read();
msg.Add((byte)currByte);
NumBytes++;
Console.WriteLine((byte)curr);
}
catch
{
Console.WriteLine("Error");
}

然后当我这样显示我收到的内容时:

string rec= BitConverter.ToString(msg.ToArray());

我得到 00-FD-FD-00

当它应该是 00-FE-ED-00 时,我已经花了好几个小时来进行强制转换等等,但是当我将中间字节转换为一个字节时,中间字节被接收为 65535 和 253。

如有任何帮助,我们将不胜感激。

最佳答案

StreamReader.Read读取具有该流当前编码的字符(默认为 utf8),这不是您的代码所假设的必需的单字节。

你应该:

  • 使用读取单字节的方法,如Stream.ReadByte
  • 写入流时使用StreamWriter(基本上读写应该互为镜像)

关于c# - 通过网络流发送字节,值发生变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22548101/

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