だから私はソケットを使用して同期ペイントプログラムのようなものを作成しようとしています.私はサーバー側..とクライアント側を持っており、サーバーからクライアントにinkCollectionを送信しようとしています.これは単純なテキストに対して機能しますが、私はインクコレクションを送信できないようです.または、データがより速く転送されるように、最後のストロークを送信するのを手伝っていただければさらにクールです.Hereは私が試してきたもののいくつかのコードです:
ストロークの送信:
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(byte[] データ):
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");
これらのまったく同じメソッドは文字列に対して完全に機能しますが、ストロークコレクションで実行しようとすると失敗します。クライアントには何も表示されず、サーバー側で次の SocketException が発生します: 既存の接続がリモートホストによって強制的に閉じられました.
しかし、皆さんがこれを行う方法についてより良い方法を手に入れたら、それは素晴らしいことです...それは私が見逃しているものですか? つまり、バイト配列に変換されたテキストで機能する場合...なぜこのストロークコレクションで機能するのでしょうか?
ありがとう!
編集:サンプルコードで私を助けることができると思いますか? 私は本当にそれを実装しているようには見えません。