所以我想通过使用套接字来创建类似于syncronized的绘制程序的东西。我有一个服务器端......并且客户端和我试图从服务器发送inkCollection到客户端。这适用于简单的文本,但我似乎无法发送inkCollection.Or它会更酷,如果你能帮我发送最后一招,以便数据传输更快。这里是我一直在尝试的代码:通过套接字发送inkcanvas笔画
发送笔划:
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中做到这一点,它fails.Nothing显示了客户端和我在服务器端获得以下SocketException:现有连接被远程主机强制关闭。
但是,如果你们有更好的方法如何做到这一点,这将是伟大的......这是我失踪的东西?我的意思是..如果它适用于文本转换成一个字节数组...为什么会这为strokecollection工作?
谢谢!
编辑:你认为你可以帮我拿出一些示例代码?我似乎无法实现它;
您可能不会调用'Close'方法,因为在退出'using'语句之后将丢弃内存流 – VMAtm 2015-02-26 13:25:51