void PerfSocket::ReportServerSettings( const char* inLocalhost ) {
    sReporting.Lock();

    // print settings
    printf( seperator_line );
    printf( server_port, 
	    (mUDP ? "UDP" : (mSettings->mProtocol == 0 ? "TCP" : "SCTP")),
	    mPort);

    if ( inLocalhost != NULL ) {
        SocketAddr local = getLocalAddress();
        char addr[ REPORT_ADDRLEN ];
        local.getHostAddress( addr, sizeof(addr));

        printf( bind_address, addr );

        if ( local.isMulticast() ) {
            printf( join_multicast, addr );
        }
    }
    if ( mUDP ) {
        printf( server_datagram_size, mSettings->mBufLen );
    }
    ReportWindowSize();
    printf( seperator_line );
    fflush( stdout );

    sReporting.Unlock();
}
void PerfSocket::ReportPeer( int inSock ) {
    assert( inSock >= 0 );

    SocketAddr local  = getLocalAddress();
    SocketAddr remote = getRemoteAddress();

    // copy the inet_ntoa into temp buffers, to avoid overwriting
    char local_addr[ REPORT_ADDRLEN ];
    local.getHostAddress( local_addr, sizeof(local_addr));

    char remote_addr[ REPORT_ADDRLEN ];
    remote.getHostAddress( remote_addr, sizeof(remote_addr));

    sReporting.Lock();

    printf( report_peer,
            inSock,
            local_addr,  local.getPort(),
            remote_addr, remote.getPort());
    fflush( stdout );

    sReporting.Unlock();
}