0
  im trying to make a client and server that the server sends image to the client

これまでのところ、画像を 1 つしか送信できず、他の画像は不可解なエラーで受け入れられませんでした。エラーを突き止めようとしましたが、うまくいきませんでした...これはサーバー コードです: public void SendImage(Image img) {

        TcpClient tempClient = _Client;

        if (tempClient.Connected) //If the client is connected
        {
            NetworkStream stream = tempClient.GetStream();
            Bitmap bmp = new Bitmap(img);
            BinaryWriter bw = new BinaryWriter(stream);
            MemoryStream ms = new MemoryStream();
            bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
            byte[] buffer = ms.ToArray();
          byte[] lengthbts=  Get8LengthByte(buffer);
          stream.Write(lengthbts,0,8);
          stream.Write(buffer, 0, buffer.Length );
          stream.Flush();
        //   bw.Close();



        }

    }
    byte[] Get8LengthByte(byte[] bytes)
    {
        string length = bytes.Length.ToString();
        while (length.Length < 8)
        {
            length = "0" + length;
        }
        return Encoding.Default.GetBytes(length);
    }

これがクライアントコードです

       NetworkStream stream = client.GetStream();
            //Bitmap bmp = new Bitmap(img);
            BinaryReader br = new BinaryReader(stream);
            byte[] datalen = new byte[8];
            br.Read(datalen, 0, 8);
            string lenStr = (Encoding.Default.GetString(datalen));
            int len = int.Parse(lenStr);//BitConverter.ToInt32(datalen, 0);//
            Console.WriteLine(len);
            byte[] buffer = new byte[len];
            br.Read(buffer, 0, buffer.Length);
              MemoryStream ms = new MemoryStream(buffer, 0, buffer.Length);
            ms.Position = 0;
            Image img = Image.FromStream(ms);
            Invoke(new MethodInvoker(delegate()
            {
                pictureBox1.Image = img;
            }
            ));

アイデアは、画像バイトの長さを最初に 8 バイト長として送信することです。たとえば、バイト長が 10 の場合、8 バイト長は「00000010」です。受信した最初の画像は非常に良好で迅速ですが、2 番目の画像はエラーを返します。 8 バイトの長さを整数にして、受信した byte[] は "?///???" のようになります。誰かがそれを理解するのを手伝ってくれるなら、私はとても感謝しています

4

1 に答える 1