キャストすることで送信することはできましたが、
受信するときに実行時にエラーがでます。

受信するとき、受信されたデータはchar[]に入るようになっています。
  char recvdata[1024];
  recvfrom(socket, recvdata, sizeof(recvdata), 0, ......);
char*で宣言すると、実行時にエラーがでます。