所以我试图通过使用套接字创建一个类似同步绘画程序的东西。我有一个服务器端..和一个客户端,我试图将inkCollection从服务器发送到客户端。这适用于简单的文本,但我似乎无法发送inkCollection。或者,如果你能帮我发送最后一笔,这样数据传输得更快,那就更酷了。这是我一直在尝试的一些代码:
发送笔画:
byte[] data;
using (MemoryStream ms = new MemoryStream())
{
inkcanvas.Strokes.Save(ms);
data = ms.ToArray();
}
svr.SendToAll("u getting some strokes");
svr.SendStrokes(data);
svr.SendStrokes(字节 [] 数据):
public void SendStrokes(byte[] data)
{
for (int i = 0; i < no; i++)
{
byte[] dt = data;
accepted[i].Send(dt);
}
MessageBox.Show("dONE");
}
这是在客户端:
byte[] buffer=new byte[1024];
MessageBox.Show("receiving strokes");
int rec = conn.Receive(buffer, 0, buffer.Length, 0);
if (rec <= 0)
throw new SocketException();
MessageBox.Show("strokes received");
//Array.Resize(ref buffer, rec);
using (MemoryStream ms = new MemoryStream(buffer))
{
inkcanvas.Strokes = new System.Windows.Ink.StrokeCollection(ms);
ms.Close();
}
MessageBox.Show("strokes added");
这些完全相同的方法非常适用于字符串,但是当我尝试使用 strokeCollection 进行操作时,它失败了。客户端上没有显示任何内容,并且我在服务器端收到以下 SocketException:现有连接被远程主机强行关闭。
但是,如果你们有更好的方法来做到这一点,那就太好了……这是我想念的吗?我的意思是..如果它适用于转换为字节数组的文本...为什么它适用于这个笔画集合?
谢谢!
编辑:你认为你可以用一些示例代码帮助我吗?我似乎真的无法实现它;