私はTCPソケットを介して画像を受信に問題がある[.NET 4.0]Image over TCPソケットを受信できませんか?
サーバー:
Socket s = null;
Socket client;
private void button1_Click(object sender, EventArgs e)
{
s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
s.Bind(new IPEndPoint(IPAddress.Any, 9988));
s.Listen(1);
client = s.Accept();
pictureBox1.Image = Image.FromStream(new NetworkStream(client));
//Server freezes here and waiting for the image .. but in the Client side.. it tells that it sent.
Console.WriteLine("Received.");
}
クライアント:
Socket s = null;
private void button1_Click(object sender, EventArgs e)
{
s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
s.Connect(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 9988));
Rectangle bounds = Screen.GetBounds(Point.Empty);
Bitmap bitmap = new Bitmap(bounds.Width, bounds.Height);
Graphics g = Graphics.FromImage(bitmap);
g.CopyFromScreen(Point.Empty, Point.Empty, bounds.Size);
bitmap.Save(new NetworkStream(s), ImageFormat.Png);
Console.WriteLine("sent.");
}
編集: イムは大きなアプリケーションを作ります。画像がうまく受信していた。コードにいくつかの変更を加えたので、正確に何が変わったのかを知ることが複雑になった。今は動作していない。新しいプロジェクトを作成した。 dはコードを試しました..まだ動作しません..私はそれを行う別の方法があることを知っています..しかし、私はこのやり方を好む。 誰かがそれを修正する方法を知っていますか?
多分あなたの問題がどこにあるのかを記述することで.... – Carsten
@CarstenKönigはサーバーコードのそのコメントでサーバーをブロックしません。あなたはそれを読むことができますか? ! –
サーバのpictureBox1コントロールまたはクラスは、png形式のバイトストリームが必要であることを理解していますか?画像のサイズを示すpng形式のメタデータが存在する可能性があり、受信側がこれを知らない場合、すべてのデータをいつ受信したかを知ることができないため、終了していない可能性があります。 –