>>789
ループ内で、positionを足すからだろ
>position += receivesize;

常に、0に戻してから始めればいい。
そうしないと上限値、1024を越えてしまうだろ

ループ内で毎回、配列のどの部分に読み込むのか?

>>790
>Image buf[];
>buf[0]=createImage(640,480);

buf[] 配列など使わずに、普通の変数を、使えば?
a = createImage(640,480);

まず、createImage でエラーになっているのかも?