Beispiel #1
0
int attempt_recieve()
{
    char buffer[DEVICE_STATE_SIZE];
    int length;
    struct timeval start, end;
    long usec;
    double intpart;
    struct timeval timeout;

    timeout.tv_sec = update_time/1000;
    timeout.tv_usec = (update_time%1000) * 1000;

    gettimeofday(&start, NULL);
    while(1)
    {
        if (setsockopt (client_tcp_sock, SOL_SOCKET, SO_RCVTIMEO, (char *)&timeout, sizeof(timeout)) < 0)
        {
            LOGERRNO("setsockopt", "Failed to set timeout for recv socket\n");
            sleep(5);
        }

        length = recv(client_tcp_sock, buffer, 11, 0);
        if(length < 0)
        {
            if(errno == EAGAIN || errno == EWOULDBLOCK)
                break;
            LOGERRNO("recv", "Error when attempt to receive on TCP socket\n");
        }
        else
        {
            decode_packet(buffer, length);
        }

        gettimeofday(&end, NULL);

        usec = (end.tv_sec - start.tv_sec)*1000000;
        usec += end.tv_usec - start.tv_usec;

        usec = (update_time*1000) - usec;

        if(usec < 0)
            break;

        timeout.tv_sec = (int) usec/1000000;
        timeout.tv_usec = (long) usec % 1000000;
    }
}
Beispiel #2
0
/**
 * @brief Destructor for the Socket class.
 */
Socket::~Socket()
{
    UFLAGS_DE( flags );

    if ( ::close( m_descriptor ) < 0 )
        LOGERRNO( flags, "Socket::~Socket()->close()->" );

    return;
}
Beispiel #3
0
int connectTCP()
{
    // Variable and structure definitions
    int rc;
    char *ip;
    struct hostent *hostp;

    ip = inet_ntoa(server_addr.sin_addr);

    // Get a socket descriptor
    client_tcp_sock = socket(AF_INET, SOCK_STREAM, 0);
    if(client_tcp_sock < 0)
    {
        LOGERRNO("socket", "Unable to create TCP socket to server %s\n", ip);
        return -1;
    }
    else
        LOGINF(1, "TCP socket created\n");

    server_addr.sin_family = AF_INET;
    server_addr.sin_port = htons(SMARTLET_PORT);

    if(server_addr.sin_addr.s_addr == (unsigned long)INADDR_NONE)
    {
        LOGERR("Server IP address is invalid: %s\n", ip);
        return -1;
    }

    // Attempt to connect to server on TCP socket
    rc = connect(client_tcp_sock, (struct sockaddr *)&server_addr, sizeof(server_addr));
    if(rc < 0)
    {
        LOGERRNO("connect", "Unable to connect to server\n");
        return -1;
    }
    else
        LOGINF(1, "Connection established...\n");

    return 1;
}
Beispiel #4
0
int deliverMessage(char* in, int size, int i)
{
    int rc;
    rc = write(client_tcp_sock, in,size);//strlen(in)+1);

    if(rc <= 0)
    {
        LOGERRNO("write", "Unable to send packet to TCP server\n");
        return -1;
    }
    else
    {
        LOGINF(1, "Write success\n");
        return 1;
    }
}