LINUX.ORG.RU

По моему достаточно просто читать/писать с/на мультикастный адрес твоей подсети

Havoc ★★★★
()

Писать то получается, tcpdump-ом вижу что пакеты отправляются, а вот прочитать не могу, возможно прарметры задаю не верно. Если знаете подскажите куском кода.

anonymous
()

для того, чтобы отправить broadcast c udp сокета, ему нужно
явно это разрешить :

int on = 1;
setsockopt(sock,SOL_SOCKET,SO_BROADCAST,&on,sizeof(on));


что касается приема, то в общем случае, если для udp socket не
вызывался connect, прикладная программа сама должна разбираться
кто ей посылает датаграмму, т.е. примерно так:

struct sockaddr_in sa,from;
int sock, flen;

sock = socket( AF_INET, SOCK_DGRAM,0);
sa.family = AF_INET;
sa.sin_port = htons(20);
sa.sin_addr.s_addr = INADDR_ANY;
bind(sock,&sa,sizeof(sa));

while ( revcfrom(sock,&buf,BUFSIZE-1,&from,&lfrom) != -1 ) {
printf("received %d bytes from %s",lfrom,inet_ntoa(from.sin_addr));
}

Z0termaNN
()

Уважаемый Z0termaNN не согласились ли Вы ответить на несколько вопросов касающихся данной темы ?

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.