コード例 #1
0
ファイル: network.cpp プロジェクト: Ketilgrav/heissann
bool NetworkMessage::receive_message() {
    if(!UDP_receive()) {
        return 0;
    }
    if(!UDP_checksum()) {
        return 0;
    }
    if(receiveMsg.sendTime + messageTimeoutTime < time(NULL)) {
        return 0;
    }
    return 1;
}
コード例 #2
0
int main(void)
{
    unsigned char buffer[1024]; // buffer per ricezione
    unsigned long ip_address;
    unsigned short port_number;
    unsigned int num; // variabile per numero da generare
    int n;
    struct in_addr add;
    char *ip_address_string;

// inizializzazione socket con porta UDP numero 23365
    if (UDP_init(23365) < 0)
    {
        printf("Errore inizializzazione socket!\r\n");
        return -1;
    }
    printf("Servizio attivo…\r\n");
    while (1)
    {
        if ((n = UDP_receive( &ip_address, &port_number, buffer, sizeof(buffer))) > 0)
        {
            // ricezione di un datagram e verifica del messaggio
            buffer[n] = '\0'; // terminatore di stringa
            if (strcmp((char*)buffer, "REQ") == 0)
            {
                // richiesta di generazione di un nuovo numero
                num = sequence();
                UDP_send(ip_address, port_number, (void*)&num, sizeof(unsigned int));
                printf("…inviato numero %u.\r\n", num);
                //soluzione

                add.s_addr=htonl( ip_address );

                ip_address_string=inet_ntoa(add);
                printf("... all'indirizzo %s \r\n", ip_address_string);
            }
        }
    }
    UDP_close();
    return 0;
}