Parameter no es un error válido al crear una imagen desde el byte [] en c #

Estoy tratando de convertir unbyte[] aBitmap Cía#. El siguiente es el código:

MemoryStream ms = new MemoryStream(b);
Bitmap bmp = new Bitmap(ms);

Muestra el errorParameter is not valid al crear laBitmap.

byte[] b proviene de una transmisión de red.

Pero cuando escribo este byte [] en un archivo, y abro este archivo en cualquier visor de imágenes, funciona perfectamente. El siguiente es el código para escribir el byte [] en el archivo:

 var fs = new BinaryWriter(new FileStream("tmp.bmp", FileMode.Create, FileAccess.Write));
 fs.Write(b);
 fs.Close();

¿Que me estoy perdiendo aqui

EDITA

Aquí está mi código completo que estaba causando el problema

 Socket s = listener.AcceptSocket();
 byte[] b = new byte[imgLen];
 s.Receive(b);
 MemoryStream ms = new MemoryStream(b);
 // now here I am using ms.Seek(0, SeekOrigin.Begin); that fixed my problem.
 Bitmap bmp = new Bitmap(ms);
 pictureBox1.Image = bmp;
 s.Close();

Estoy usando este código enForm_Load evento y no hay nada extra. Solo estoy tratando de mostrar una imagen que se transmite por la red. El servidor está escrito en Java que está transmitiendo esta imagen.

Espero que aclare las dudas.

Gracia

Respuestas a la pregunta(3)

Su respuesta a la pregunta