67ms传一张1024*768的图片,传了几秒钟就出问题了,image.fromstream(data)出错是参数无效,查了查好像是图片的头文件没了不知道哪出的问题请高手指点
传送端: byte[] file = null; 
        
            
        file = def.getdata(); 
                
      
        byte[] result = BitConverter.GetBytes(file.Length); 
        int aa = BitConverter.ToInt32(result, 0); 
        
        socket.Send(result);         int longer = file.Length; 
        int start = 0; 
        int mid = 0; 
        int count = socket.Send(file, start, longer, SocketFlags.None); 
        mid += count; 
        longer -= count; 
        while (longer != 0) 
        { 
            count = socket.Send(file, mid, longer, SocketFlags.None); 
            mid += count; 
            longer -= count; 
        } 
接受端: 
byte[] inum = new byte[4]; 
            
            revSocket.Receive(inum); 
            
            int aa = BitConverter.ToInt32(inum, 0); 
            byte[] file = new byte[aa]; 
            
            //revSocket.Receive(file);             int longer = file.Length; 
            int start = 0; 
            int mid = 0; 
            int count = revSocket.Receive(file, start, longer, SocketFlags.None); 
            mid += count; 
            longer -= count; 
            while (longer != 0) 
            { 
                count = revSocket.Receive(file, mid, longer, SocketFlags.None); 
                mid += count; 
                longer -= count; 
            } 
            MemoryStream ms = new MemoryStream(file); 
          
            Image image = Image.FromStream(ms);//出错行 
            image.Save(@"c:\aa\j"+(aa++)+".gif", ImageFormat.Gif); 

解决方案 »

  1.   

    是不是这个def.getdata();过一段时间出了问题
    其它想不到什么问题 
      

  2.   

    你的缓冲区台小。不知道你1024*768的图片大小,一般应该大于1024个字节。socket每次最大发送字节为1024.你接收每次接收1024,但你的缓冲只有4,将1024字节填充到4中。所以你没接收一包数据都丢了1020的字节数据,丢数据了。
      

  3.   

    socket每次最大发送字节为1024?从何得来的数据?