Перейти к содержанию

Multicast


Гость

Рекомендуемые сообщения

Помогите срочно надо !!!

Есть кусок кода в котором я испульзую multicast.

#include

#include

#include

#include

#include

#include

#include

#include

#define STDTRACE(i) std::cout << __FILE__ << ":"<< __LINE__ << std::endl; Error(i);

int Socket;

socklen_t nlen;

struct sockaddr_in Address,sto,From;

struct in_addr addr;

char Buf[512];

const short port = 1400;

void Error(int i);

int main(int argc, char **argv)

{

bzero((char *)&sto,sizeof(sto));

addr.s_addr=inet_addr("225.0.0.1");

sto.sin_family=AF_INET;

sto.sin_port=htons(port);

sto.sin_addr=addr;

nlen=sizeof(sockaddr_in);

int ttl=7,one=1;

struct ip_mreq mreq;

if((Socket=socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP))==-1)

{

STDTRACE(0);

}

Address.sin_family=AF_INET;

Address.sin_port=htons(port);

Address.sin_addr.s_addr=INADDR_ANY;

if(bind(Socket,(struct sockaddr *)&Address,sizeof(Address))==-1)

{

STDTRACE(1);

}

if(setsockopt(Socket,IPPROTO_IP,IP_MULTICAST_TTL,&ttl,sizeof(ttl))==-1)

{

STDTRACE(2);

}

bzero((char *)&mreq,sizeof(mreq));

mreq.imr_multiaddr.s_addr=inet_addr("225.0.0.1");

mreq.imr_interface.s_addr=INADDR_ANY;

if(setsockopt(Socket,IPPROTO_IP,IP_ADD_MEMBERSHIP,&mreq,sizeof(mreq))==-1)

{

STDTRACE(2); //ВОТ ТУТ ВЫСКАКИВАЕМ ОШИБКА !!!!!!!!!

}

setsockopt(Socket,SOL_SOCKET,SO_REUSEADDR,&one,sizeof(one));

}

void Error(int i)

{

char *errors[6]={"Error of socket",

"Error of bind:port already busy",

"Error of setsockopt",

"Error of sending",

"Error of gethostname",

"Error of gethostbyname"};

std::cout << errors << " " <

exit(1);

}

При запуске вот что она говорит

[lamer@a tmp]$ ./a.out

sechat.cpp:60

Error of setsockopt No such device

[lamer@a tmp]$

Подскажите чё делать ?????????

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...