我使用二进制序列化对象来读取或写入数据流,以前如果我们要写入/读取它们,我们必须将“实例类”编译为DLL文件,以便它们之间有相同的程序集,对吗?
现在,我的问题是:
这是我的二进制发送器代码:
这是我想要发送给所有客户端的“实例类”代码。 好的,让我们考虑以下代码:
如您所见,有几个List变量,如Bitmap和string。其中Bitmap数据用于图像数据。如果我使用许多图像填充它,它将增加变量内存的大小,大约为20MB。
接下来,我将向所有客户端发送它们。那么,这里是我的问题:
使用此技术,如果对象的大小约为20MB,是否会工作良好?我知道Socket通信有发送数据的大小限制。
我不想定义任何协议,我只想使用Socket通信,尽管这可能不是最佳方式。
谢谢您的回复。
现在,我的问题是:
这是我的二进制发送器代码:
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。其中Bitmap数据用于图像数据。如果我使用许多图像填充它,它将增加变量内存的大小,大约为20MB。
接下来,我将向所有客户端发送它们。那么,这里是我的问题:
使用此技术,如果对象的大小约为20MB,是否会工作良好?我知道Socket通信有发送数据的大小限制。
我不想定义任何协议,我只想使用Socket通信,尽管这可能不是最佳方式。
谢谢您的回复。
CanRead
检查,因为它没有任何作用,如果为false会导致CPU烧毁100%...不过你的代码看起来很不错。 - usr