gpt4 book ai didi

c# - 如何在 NetworkStream 字节数组中放置分隔符?

转载 作者:太空狗 更新时间:2023-10-29 20:34:22 25 4
gpt4 key购买 nike

我正在设置一种在服务器和客户端之间进行通信的方法。我目前的工作方式是,流的第一个字节将包含即将发生的内容的指示符,然后查找该请求的类我可以确定请求的长度:

stream.Read(message, 0, 1)

if(message == <byte representation of a known class>)
{
stream.Read(message, 0, Class.RequestSize);
}

我很好奇如何处理类大小未知的情况,如果在读取已知请求后数据已损坏。

我想我可以在流中插入某种定界符,但由于一个字节只能在 0-255 之间,我不确定如何创建一个唯一的定界符。我是否要将模式放入流中以表示消息的结尾?我如何确定此模式足够独特,不会被误认为是实际数据?

最佳答案

对此有不同的方法。一个选项是首先发送类名的长度和可能的整个数据包(例如总是第一个字节)。这样你就可以只读取那个字节,然后再读取 n 个字节来获取类名。

通过这种方法,您不会最终阅读恶意客户端发送给您的大量内容,目的是对您的应用程序进行 DoS 攻击,并且您可以快速确定您是否阅读了足够多的内容来处理数据包或如果还没有完成。

关于c# - 如何在 NetworkStream 字节数组中放置分隔符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13974228/

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