byte[] inum = new byte[32];
            revSocket.Receive(inum);
            int aa = BitConverter.ToInt32(inum, 0);
            byte[] ib = new byte[aa];
            revSocket.Receive(ib);
            MemoryStream ms = new MemoryStream(ib);
            Image image = Image.FromStream(ms);//出错行
有时候行,有时候就不行

解决方案 »

  1.   

    为接受完全! 你就转化 ,当然错!
    看看 发送时候大小,和 你转化时候的大小》?需要判断是否接受完!Socket 是 分包发送的!
      

  2.   

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    using System.Net.Sockets;
    using System.Net;
    using System.IO;
    using System.Runtime.InteropServices;
    using System.Drawing.Imaging;
    using System.Threading;
    namespace WindowsApplication2
    {
        public partial class Form1 : Form
        {
            Socket revSocket = null;
          
            static System.Windows.Forms.Timer myTimer = new System.Windows.Forms.Timer();
            public Form1()
            {
                InitializeComponent();
            }
            //public delegate void InvokeDelegate();
            private void Form1_Load(object sender, EventArgs e)
            {
                revSocket = new Socket(AddressFamily.InterNetwork,
                                                 SocketType.Stream,
                                                 ProtocolType.Tcp);
                revSocket.Connect(IPAddress.Parse("192.168.1.104"), 8016);
                revSocket.ReceiveBufferSize = 131072;
                pictureBox1.Width = Screen.PrimaryScreen.Bounds.Width;
                pictureBox1.Height = Screen.PrimaryScreen.Bounds.Height;
                print();
            }
            private void print() {
                myTimer.Tick += new EventHandler(out1);            // Sets the timer interval to 5 seconds.
                myTimer.Interval = 2000;
                myTimer.Start();
                       }
            public void out1(Object myObject,
                                                EventArgs myEventArgs)
            {
                byte[] file = new byte[65536];
                revSocket.Receive(file);
                          MemoryStream ms = new MemoryStream(file);            Image image = Image.FromStream(ms);//出错行
                //image.Save(@"c:\aa\j.gif", ImageFormat.Gif);
                pictureBox1.SizeMode = PictureBoxSizeMode.AutoSize;
                pictureBox1.Image = image;
                ms.Close();
                       }
        }
    }
      

  3.   


    MemoryStream ms = new MemoryStream(...);
    byte[] x=ms.ToArray();
    Convert.ToBase64String(x);  收
    Convert.FromBase64CharArray(...)
      

  4.   

    ms不能释放,不能为null,不能Flash()
      

  5.   

    我也遇到了使用Image.Fromstream()时程序报参数无效。悲催