gpt4 book ai didi

C#,基于套接字通信的二进制序列化

转载 作者:行者123 更新时间:2023-11-30 12:31:14 24 4
gpt4 key购买 nike

我使用二进制序列化对象来读取或写入数据流,之前如果我们要写入/读取它们,我们必须将“实例类”编译为 DLL 文件,因此我们有相同的程序集他们之间,对吗?

好吧,这是我的问题:

这是我的二进制发件人代码

public void SendBinarySerial(object graph)
{
IFormatter formatter = new BinaryFormatter();

System.Net.Sockets.NetworkStream strm = mClient.GetStream(); //get TCPclient stream

formatter.Serialize(strm, graph);
}

这是我的二进制接收器代码:

private void doRead()
{
do
{
if (mClient.GetStream().CanRead)
{
System.Net.Sockets.NetworkStream strm = mClient.GetStream();

IFormatter formatter = new BinaryFormatter();

object mydat = (object)formatter.Deserialize(strm);//deserialize data receiver
}
} while (true);
}

这是我要发送给所有客户的“实例类”代码。好的,让我们考虑以下代码:

[Serializable()]
public class DataSend
{
public List<Bitmap> MainData = new List<Bitmap>();
public List<string> Title = new List<string>();
}

如您所见,有几个 List 变量,例如 Bitmap 和 string。位图数据用于图像数据。如果我用很多图像填充它,它会增加变量内存的大小,可能大约 20 MB。

之后,我将把它们发送给所有客户。那么,这是我的问题:

使用此技术,如果大小对象约为 20 mb,此方法是否有效?我知道Socket通信对发送数据有大小限制

我根本不想定义任何协议(protocol),我只想使用套接字通信,尽管这可能不是最好的方式。

感谢您的回复。

最佳答案

我不会担心使用套接字的大小限制。根据我的经验,可以从 NetworkStream 读取/写入任意大小。但是,我会担心 Bitmap 对象的可序列化性。据我所知,这不会序列化图像数据。

关于C#,基于套接字通信的二进制序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14088821/

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