Обмен сообщениями между компами я организовал через джаббер, с использованием базового сообщения абстрактного типа. код примерно такой, постараюсь удалить весь джабер и оставить суть:## Код:
```
IMPORT SYSTEM, Kernel, Meta

   TYPE
MsgPtr* = POINTER TO Message;
Message* = ABSTRACT RECORD (AbfBus.Message) END;
Alien* = POINTER TO RECORD (Message)
         data* : Items.Item;
      END;
   Converter* = POINTER TO ABSTRACT RECORD END;
   PROCEDURE (c : Converter) ItemToMsg*(item : Items.Item; VAR msg : MsgPtr; res : INTEGER), NEW, ABSTRACT;
   PROCEDURE (c : Converter) MsgToItem*(VAR msg : Message; OUT item : Items.Item), NEW, ABSTRACT;
   StdConv = POINTER TO RECORD(Bus.Converter) END; 
   
PROCEDURE LookupItem (VAR r: ANYREC; OUT i: Meta.Item);
   VAR type: Kernel.Type; mod: Kernel.Module; attr: Kernel.ItemAttr;
   BEGIN   (* create a meta item for a global variable passed as VAR parameter *)
      attr.obj := Meta.varObj;
      attr.typ := Meta.recTyp;
      attr.vis := Meta.exported;
      attr.adr := SYSTEM.ADR(r);
      attr.mod := NIL;
      attr.desc := SYSTEM.VAL(Kernel.Type, SYSTEM.TYP(r));
      attr.ptr := NIL;
      attr.ext := NIL;
      attr.mod := NIL;
      Meta.GetThisItem(attr, i)
   END LookupItem;   

PROCEDURE (c : StdConv) ItemToMsg(item : Items.Item; VAR msg : Bus.MsgPtr; res : INTEGER);
   VAR name, summ : ARRAY 127 OF CHAR; this : Meta.Item; x : ANYPTR; hash : SternMd5.Hash; i : INTEGER; fnum, fp : ARRAY 127 OF CHAR; al : Bus.Alien; sp : Bus.Special;
BEGIN
      name:=item.GetParam(Const.type)$;
      Meta.LookupPath(name, this);
      IF this.Valid() THEN
         x:=this.New();
         ASSERT(x#NIL);
         msg:=x(Bus.MsgPtr);
         LookupItem(msg, this);
         i:=0; Inc(fnum);
      ELSE
         NEW(al); al.data:=item;
         msg:=al;
      END;
   END ItemToMsg;
```
