не вижу UDP-трансляцию с netcat - PullRequest
0 голосов
/ 08 июня 2018

Я пытаюсь транслировать UDP по сети.

Некоторые подробности о моей сети.

Трансляция будет происходить с 172.24.176.219

Я буду слушать трансляцию на 172.24.176.116

Маска подсети 255.255.255.0

Код вещания указан ниже:

#define _GNU_SOURCE

#include <arpa/inet.h>
#include <linux/if.h>
#include <netinet/in.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/ioctl.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <time.h>
#include <unistd.h>


#define PORT    10001
#define MAXBUF  65536

int main(void) {
    int sock, status, buflen, sinlen;
    char buffer[MAXBUF];
    struct sockaddr_in sock_in;
    int yes = 1;

    sinlen = sizeof(struct sockaddr_in);
    memset(&sock_in, 0, sinlen);
    buflen = MAXBUF;

    sock = socket (AF_INET, SOCK_DGRAM, IPPROTO_UDP);

    sock_in.sin_addr.s_addr = htonl(INADDR_ANY);
    sock_in.sin_port = htons(PORT);
    sock_in.sin_family = AF_INET;

    status = bind(sock, (struct sockaddr *)&sock_in, sinlen);
    printf("Bind Status = %d\n", status);

    status = setsockopt(sock, SOL_SOCKET, SO_BROADCAST, &yes, sizeof(int) );
    printf("Setsockopt Status = %d\n", status);

    inet_aton("172.24.176.255", &sock_in.sin_addr);
    sock_in.sin_port = htons(PORT + 1); // port number
    sock_in.sin_family = AF_INET;

    sprintf(buffer, "Ciao");
    while(1)
    {
        buflen = strlen(buffer);
        status = sendto(sock, buffer, buflen, 0, (struct sockaddr *)&sock_in, sinlen);
        printf("sendto Status = %d\n", status);
        sleep(1);
    }

    shutdown(sock, 2);
    close(sock);
}

Вот Makefile для компиляции источника C.Имя C источник myserver.c

CFLAGS+=-Wall -Wextra -Werror -pedantic -std=c99

TARGET=myserver

.PHONY: all
all: $(TARGET)

.PHONY: clean
clean:
    rm -f $(TARGET)

Команда netcat, которую я запускаю для прослушивания UDP:

nc -ul 172.24.176.116 10002

Проблема в том, что я нене вижу ничего, отображаемого Netcat.Я прослушал трафик с помощью Wireshark и вижу, что пакет отправляется на 172.24.176.255

Вот снимок экрана:

enter image description here

Я попытался прослушать 172.24.176.255, nc -lu 172.24.176.255 10002, но получил следующий вывод nc: Can't assign requested address.

Я что-то упустил или netcat просто не может обработать UDP-трансляцию?

...