对此,我一直在使用序列化来不断发送图像数据。这意味着我将图像保存在内存流中,并通过序列化发送。
但我不明白我是否应该使用序列化或网络流。我唯一要做的就是循环发送图像。
我一直在尝试让 Networkstream 工作,但它并没有按照我的方式进行,所以这是我的代码。出于某种原因,它只感知 1 张图像,当我使用序列化时,它会不断进行。
private void Initialize()
{
NetSerializer.Serializer.Initialize(new Type[] { typeof(MemoryStream) });
tcplisten = new System.Net.Sockets.TcpListener(IPAddress.Any, 1700);
tcplisten.Start();
}
private void Listen()
{
try
{
using (TcpClient tt1 = tcplisten.AcceptTcpClient())
{
tt1.NoDelay = true;
while (checkBox1.Checked)
{
panel1.BackgroundImage = Image.FromStream(tt1.GetStream());
}
}
}
catch
{
}
}
这是发送:
private void Send()
{
try
{
string process = Proccessname.Text;
using (TcpClient tcp = new TcpClient())
{
tcp.NoDelay = true;
while (capcon == true)
{
if (tcp.Connected)
{
PrintWindow(process, tcp.GetStream());
}
else
{
tcp.Connect(adress);
}
}
}
}
catch
{
}
}
什么 PrintWindow(process, tcp.GetStream()); 做的很简单,截取一个窗口(进程=进程的名称),然后将其保存在哪里(tcp.GetStream()),使其发送和流式传输(至少我认为是这样)。
它确实有点工作,如果我断开连接并连接等,它会发送图像,但我认为它非常随机,不知道为什么我必须这样做,我希望它继续发送只要循环处于活动状态.
(这与序列化和 MemoryStream 完美配合(将位图保存在内存流中并在序列化中使用))。
所以这就像两个问题,取决于第一个的答案。
对于我的目的,(发送图像)、序列化或 NetworkStream 哪个更快?如果 NetworkStream 更快,我怎样才能让它工作,我上面的代码有什么问题。
谢谢
if (tcp.Connected)
{
MemoryStream ms = new MemoryStream();
PrintWindow(process, ms);
panel1.BackgroundImage = Image.FromStream(ms);
}
这有效,因此它正在连接,并且数据正在保存(为此更改为 MemoryStream 而不是 NetworkStream)。