在tcp / ip中转换图像文件

时间:2017-09-03 10:36:32

标签: c# arrays image byte tcp-ip

我将图像文件转换为字节数组并将其打包为14字节数据包并通过SerialPortEventHandler发送。另一方面,在接收器部分我丢失了一些数据包,当我在新的图像文件中生成接收的字节数组时,图像的其余部分在丢失的数据包之后错误地移位,我已经用零替换丢失的数据包。虽然这适用于文本文件完美。这是我在客户端和服务器端的代码:

    client 

      _file = ofile.ConvertFileToByte(txtFileName.Text);
      for (int k = 0; k < Configuration.PacketNumberInFrame; k++)
                        {

                            ((BackgroundWorker)sender).ReportProgress((j * Configuration.PacketNumberInFrame + i) * 100 / Configuration.FileCount);

                            if (i + _numberOfByte <= Configuration.FileCount)
                                _packet = _file.SubArray(i, _numberOfByte);
    }
    //send packet
    ...

    Server


     try
                {

                    while (true)
                    {
                        size = port.BytesToRead;

                        if (size >= 18)
                            break;

                    }
                    byte[] packet = new byte[size];
                    var str2 = port.Read(packet, 0, size);

                    if (System.Text.Encoding.Default.GetString(packet).Contains(Configuration.EndKeyByte) && !endFlag)
                        EndRecieving();
                    else
                        Extract(packet);
                }
                catch
                    (Exception ex)
                {

                    MessageBox.Show(ex.Message);
                }

            }

    public Extract(packet)
    {
     Recieve_Data.Add( packet);
    }

    public EndRecieving()
    {
    for(int i=0;i<  arrayResult.AddRange(packetData);i++)
    {
      arrayResult.AddRange(packetData);
    }
     string filePath = Configuration.LogFilePath + "\\CreatedFile-" + "."filePrefix.ToLower();
  var stream = new FileStream(filePath,
                FileMode.Create,
                FileAccess.ReadWrite);

            FileData oFile = new FileData();

            stream.Write(result, 0, result.Length);
            stream.Close();

    }

0 个答案:

没有答案