所以我想通過使用套接字來創建類似於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