私の意見では、ビットマップオブジェクトがによって作成されるStream(socket)
と、コンストラクター関数はsocket.close()、socket.shutdownなどのEOFを待機します。
これはソースコードです
送信者側
Socket client_s = new Socket(AddressFamily.InterNetwork, SocketType.Stream,ProtocolType.Tcp);
IPEndPoint serverEP = new IPEndPoint(IPAddress.Loopback, 4567);
client_s.Connect(serverEP);
NetworkStream stream = new NetworkStream(client_s);
bmp.Save(stream, System.Drawing.Imaging.ImageFormat.Jpeg);
受信者側
clientSocket = listenSocket.Accept();
NetworkStream s = new NetworkStream(clientSocket);
Bitmap slice_bmp = new Bitmap(s);
Graphics g = this.CreateGraphics();
g.DrawImage(slice_bmp,0,0);
受信側は、ソケットを閉じるか、ソケットを半分閉じるまでブロックされます(送信者側)
ビットマップオブジェクトを誰かに繰り返し送信したいご存知のように、接続のオーバーヘッドは無視できません。この関数は1つのソケットで処理する必要があります。
オブジェクト間の分類に特殊文字を使用することを提案する人もいます(1つのソケットを利用して複数のオブジェクトを送信します)。ただし、このソリューションではソースが複雑になります。ソースコードをできるだけ単純にしたいです。
最後に私の質問は次のように要約されます
- 特殊文字を使用せずに、1つのソケットでビットマップオブジェクトを繰り返し送信するにはどうすればよいですか?
- また、ソースをできるだけシンプルにしたい(ソースコードの上に置いておく)
- 最後に、EOFを既存の構築機能(受信者側)に送信するにはどうすればよいですか?