uchar sixbytes[6];
ushort net_datasize;
ushort host_datasize;//正しい値がすでに入っていると仮定
ushort *p;

memset(sixbytes, 0, sizeof(sixbytes));

net_datasize = htons(host_datasize);
p = (ushort *)&sixbytes[4];
*p = net_datasize;

send(sock, sixbytes, sizeof(sixbytes), 0);

こんな感じでどう?

受けて側では逆の処理をして適切なhost_datasizeを取得してね。
逆の処理の仕方とかは聞かないでね。