CTCPSocket      *tcp                    = TCPSocket(AF_INET);
CTCPSocket      *new;
U8                       buffer_size    = TCP_MSS;
U8                      *buffer                 = CAlloc(buffer_size);

CSocketAddressIPV4 *socket_addr = CAlloc(sizeof(CSocketAddressIPV4));

U0 TCPTest()
{
        tcp->timeout = TCP_TIMEOUT * 3;

        ClassRep(tcp);

        socket_addr->port                        = EndianU16(0xBEEF);
        socket_addr->family                      = AF_INET;
        socket_addr->address.address = INADDR_ANY;

        "\nTrying to bind socket.\n";
        if (TCPSocketBind(tcp, socket_addr) == 0)
                "\nSocket bound.\n";
        else
                "\nFailed to bind socket.\n";

        "\nTrying to listen on socket.\n";
        if (TCPSocketListen(tcp, 5) == 0)
                "\nSocket now listening.\n";
        else
                "\nFail to listen on socket.\n";

        "\nTrying to accept a connection\n";
        if ((new = TCPSocketAccept(tcp)) != NULL)
                "\nNew socket connected.\n";
        else
        {
                "\nFailed to accept.\n";
                return;
        }

        "\n\nTrying to Receive data\n";

        if (TCPSocketReceive(new, buffer, buffer_size) > 0)
                "\nData received\n";
        else
                "\nData not received\n";

        "\n\n";

        D(buffer, buffer_size, FALSE);

        "\n\n";

        "\nTrying to Send data\n";
        if (TCPSocketSend(new, buffer, buffer_size) > 0) // echo back
                "\nData sent.\n";
        else
                "\nData not sent\n";

        ClassRep(tcp_globals.bound_socket_tree);

        Sleep(5000);

        "\n\nTrying to close the accepted socket\n";
        if (TCPSocketClose(new) == 0)
                "\nSocket Closed.";
        else
                "\nSocket close failed."

        "\n\nTrying to close the listening socket\n";
        if (TCPSocketClose(tcp) == 0)
                "\nSocket Closed.";
        else
                "\nSocket close failed.";



        Sleep(500);

        //NetStop;

        //NetStart;
}

TCPTest;