|----+----+----+----|
|entrySize-------| //パケット独自項目
|num1------------| //ここから固定長部分
|num2------------|
|str1Offset------| //データとパケットで違う項目
|str2Offset------| //データとパケットで違う項目
|str1の中身........| //ここから可変長部分
|.....文字列おわりnull|
|str2の中身........|
|.....文字列おわりnull、4バイト切りいいところまでnull|
とかの形でパケット化するんだわ。

受信側は、
entrySize分のメモリを用意して、
num1〜str2の中身をコピーして、
str1Offsetとstr2Offsetの値を書き換えてやれば
struct Hoge のできあがりと。

これは例だからもちろん他のやりかたでもよし。