U0 UDPSocketTest()
{
    "Before any sockets added:\n";
    UDPRep;

    CUDPSocket          *u0 = UDPSocket(AF_INET);
    CUDPSocket          *u1 = UDPSocket(AF_INET);
    CUDPSocket          *u2 = UDPSocket(AF_INET);
    CUDPSocket          *u3 = UDPSocket(AF_INET);
    CUDPSocket          *u4 = UDPSocket(AF_INET);
    CUDPSocket          *u5 = UDPSocket(AF_INET);

    CSocketAddressIPV4  *i0 = CAlloc(sizeof(CSocketAddressIPV4));
    CSocketAddressIPV4  *i1 = CAlloc(sizeof(CSocketAddressIPV4));
    CSocketAddressIPV4  *i2 = CAlloc(sizeof(CSocketAddressIPV4));
    CSocketAddressIPV4  *i3 = CAlloc(sizeof(CSocketAddressIPV4));
    CSocketAddressIPV4  *i4 = CAlloc(sizeof(CSocketAddressIPV4));
    CSocketAddressIPV4  *i5 = CAlloc(sizeof(CSocketAddressIPV4));

    i0->port            = EndianU16(30);
    i0->family          = AF_INET;
    i0->address.address = 0xDEADBEEF;

    i1->port            = EndianU16(25);
    i1->family          = AF_INET;
    i1->address.address = 0xF00DBABE;

    i2->port            = EndianU16(35);
    i2->family          = AF_INET;
    i2->address.address = 0xC0C0D0D0;

    i3->port            = EndianU16(20);
    i3->family          = AF_INET;
    i3->address.address = 0xF007BA11;

    i4->port            = EndianU16(28);
    i4->family          = AF_INET;
    i4->address.address = 0x0B0E5EED;

    i5->port            = EndianU16(37);
    i5->family          = AF_INET;
    i5->address.address = 0x00ABCDEF;

    UDPSocketBind(u0, i0);
    UDPSocketBind(u1, i1);
    UDPSocketBind(u2, i2);
    UDPSocketBind(u3, i3);
    UDPSocketBind(u4, i4);
    UDPSocketBind(u5, i5);

    "All sockets now bound. Currently bound:\n";
    UDPRep;
    "\n";

    UDPSocketClose(u0);
    "After remove first socket\n";
    UDPRep;
    "\n";

    UDPSocketClose(u1);
    "After remove second socket\n";
    UDPRep;
    "\n";

    UDPSocketClose(u2);
    "After remove third socket\n";
    UDPRep;
    "\n";

    UDPSocketClose(u3);
    "After remove fourth socket\n";
    UDPRep;
    "\n";

    UDPSocketClose(u4);
    "After remove fifth socket\n";
    UDPRep;
    "\n";

    UDPSocketClose(u5);
    "After remove sixth socket\n";
    UDPRep;
    "\n";

    Free(i0);
    Free(i1);
    Free(i2);
    Free(i3);
    Free(i4);
    Free(i5);
}

UDPSocketTest;