Link

異種ハードウェア混在環境

異種ハードウェア、OSでの分散

内部データの表現が同じなら可能です。 具体的には

charの幅
uint32_t, uint64_t, size_t の幅、バイトオーダー
int32_t, int64_t の幅と負数の表現、バイトオーダー
double の幅と表現(オーダー含む)
ポインタ(void *)の幅

が一致すれば、異なるOS、ハードウェアでも連携して動作します。

(病理学的には、Cの規格を厳密に参照すると、上記の制約でも不十分ですが、実質的には問題ありません)

通信部分の仕組み

クライアントとサーバは独自のプロトコルで動作しています。 そのプロトコルでは、GETAssocで用いられる一部のデータについて 整列させる関数を用いることで簡素化を図っています。 xgserv.cにあるmar_で始まる関数16個が整列関数です。 一方、整列されたデータを構造体に再組み立てするのは marshal.cにあるumarですので、これらに手を加えて データ表現の不一致に対応できるようにすれば、 ヘテロ環境でも動作可能です。