LINUX.ORG.RU

О любимом, о broadcast socket


0

0

1. создаю сабж:

int BF=SO_BROADCAST;

sr = socket (AF_INET, SOCK_DGRAM, 0);

bzero (&clnt_dgram, sizeof(clnt_dgram));

clnt_dgram.sin_family = AF_INET;

clnt_dgram.sin_addr.s_addr = INADDR_ANY;

clnt_dgram.sin_port = htons(CLNT_PORT);

bind (sr, (struct sockaddr *)&clnt_dgram, sizeof(clnt_dgram))

setsockopt(sr, SOL_SOCKET, SO_BROADCAST, (void *)&BF, sizeof(BF));

bzero (&srv_dgram, sizeof(srv_dgram));

srv_dgram.sin_family = AF_INET;

srv_dgram.sin_addr.s_addr = INADDR_ANY;

srv_dgram.sin_port = htons(SRV_PORT);

len = sizeof(srv_dgram);

sendto(sr, &CLIENT_UP, sizeof(CLIENT_UP), 0, (struct sockaddr *)&srv_dgram, from_len );

смотрю tcpdump-ом - пакеты уходят, броадкастовые, как положено но вот проблемка: уходят они только на интерфейс lo, а eth0 молчит, как партизан. иде грабли?

2. имеет ли значение, когда вызывается setsockopt() - до bind(), или после. а то во всех примерах по разному...

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