<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _read_ipx_address(self):
 """Read IPX address field. Structure of IPX address: Octets Bits Name Description 0 0 ipx.addr.network Network Number 4 32 ipx.addr.node Node Number 10 80 ipx.addr.socket Socket Number """

        # Address Number
        _byte = self._read_fileng(4)
        _ntwk = ':'.join(textwrap.wrap(_byte.hex(), 2))

        # Node Number (MAC)
        _byte = self._read_fileng(6)
        _node = ':'.join(textwrap.wrap(_byte.hex(), 2))
        _maca = '-'.join(textwrap.wrap(_byte.hex(), 2))

        # Socket Number
        _sock = self._read_fileng(2)

        # Whole Address
        _list = [_ntwk, _node, _sock.hex()]
        _addr = ':'.join(_list)

        addr = dict(
            network=_ntwk,
            node=_maca,
            socket=SOCK.get(int(_sock.hex(), base=16)) or _sock,
            addr=_addr,
        )

        return addr