...
NetworkStream ns;
Image img;
...
当我调用:
img.Save(ns,System.Drawing.Imaging.ImageFormat.Jpeg);
程序就阻塞了   等很久都没反应。
这样使用有问题???

解决方案 »

  1.   

    为什么要这样发送呢,你可以把图片存为内存流,然后用SOCKET发送过去!
      

  2.   

    反正都挺简单的。lz,不知道你的程序是不是socket的另一端有堵塞?
      

  3.   

    我是在本机测试的   另一端就监听。
    我这边img.Save(ns,System.Drawing.Imaging.ImageFormat.Jpeg);   调试到这里就阻塞了 。
    根本发不出去。
      

  4.   

    你确定你的NetworkStream没有问题?
      

  5.   

    我用这个代码实现的,没有任何问题啊。看看是你哪个地方出错了。using System.Drawing;
    using System.Drawing.Imaging;
    using System.IO;
    using System.Net;
    using System.Net.Sockets;
    using System.Threading;namespace Test
    {
        class Program
        {
            static void Main()
            {
                new Thread(new ThreadStart(td)).Start();
                Thread.Sleep(1000);
                Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                s.Connect("127.0.0.1", 8002);
                NetworkStream ns = new NetworkStream(s);
                Image img = Image.FromFile("1.bmp");
                img.Save(ns, ImageFormat.Jpeg);
                ns.Close();
                s.Close();
            }
            static void td()
            {
                Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                s.Bind(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 8002));
                s.Listen(10);
                NetworkStream ns = new NetworkStream(s.Accept());
                FileStream fs = new FileStream("1.jpg", FileMode.Create);
                int b;
                while((b = ns.ReadByte()) != -1)
                    fs.WriteByte((byte)b);
                fs.Flush();
                fs.Close();
                ns.Close();
            }
        }
    }