Example #1
0
/* UDP server thread */
void *sixlowapp_udp_server_loop(void *arg)
{
    (void) arg;

    sockaddr6_t sa;
    char buffer_main[UDP_BUFFER_SIZE];
    uint32_t fromlen;
    int sock;
    fromlen = sizeof(sa);

    while (1) {
        while(!sixlowapp_netcat_listen_port) {
            thread_sleep();
        }

        sock = socket_base_socket(PF_INET6, SOCK_DGRAM, IPPROTO_UDP);

        memset(&sa, 0, sizeof(sa));
        sa.sin6_family = AF_INET;
        sa.sin6_port = HTONS(sixlowapp_netcat_listen_port);

        if (-1 == socket_base_bind(sock, &sa, sizeof(sa))) {
            printf("Error bind failed!\n");
            socket_base_close(sock);
            sixlowapp_netcat_listen_port = 0;
            continue;
        }

        printf("Listening for incoming UDP connection at port %" PRIu16 "\n", sixlowapp_netcat_listen_port);
        int32_t recsize = socket_base_recvfrom(sock, (void *)buffer_main, UDP_BUFFER_SIZE, 0, &sa, &fromlen);

        if (recsize < 0) {
            printf("ERROR: recsize < 0!\n");
        }

        printf("UDP packet received, payload: %s\n", buffer_main);

        socket_base_close(sock);
        sixlowapp_netcat_listen_port = 0;
    }

    return NULL;
}
Example #2
0
File: udp.c Project: barryzxy/RIOT
static void *init_udp_server(void *arg)
{
    (void) arg;

    sockaddr6_t sa;
    char buffer_main[UDP_BUFFER_SIZE];
    int32_t recsize;
    uint32_t fromlen;
    int sock = socket_base_socket(PF_INET6, SOCK_DGRAM, IPPROTO_UDP);

    memset(&sa, 0, sizeof(sa));

    sa.sin6_family = AF_INET;
    sa.sin6_port = HTONS(SERVER_PORT);

    fromlen = sizeof(sa);

    if (-1 == socket_base_bind(sock, &sa, sizeof(sa))) {
        printf("Error bind failed!\n");
        socket_base_close(sock);
        return NULL;
    }

    while (1) {
        recsize = socket_base_recvfrom(sock, (void *)buffer_main, UDP_BUFFER_SIZE, 0, &sa, &fromlen);

        if (recsize < 0) {
            printf("ERROR: recsize < 0!\n");
        }

        printf("UDP packet received, payload: %s\n", buffer_main);
    }

    socket_base_close(sock);

    return NULL;
}