为什么我的setsockopt()总提示setsockopt: No such device

MyMitac 2006-10-23 03:20:11
前面几个API都能通过,但是在最后一个if()语句时,setsockopt()出错,提示:“setsockopt: No such device”,请高手救命,是不是我的代码写的有问题,还是相关设备设置有问题。

代码如下:
#define MAXBUF 9000
#define MAXNEWS 1024
#define PUERTO 1234
#define GRUPO "224.0.0.1"

#define MSG_MAGIC "1234567"
#define MSG_MAGIC_LEN 8
#define TYPE_FROM_CM_TITLE 2
#define TITLE_CONTENT 2
#define ENCRYPTION_PASSWORD "123"

int socket_test()
{
int s,n,r, tmplen;
struct sockaddr_in srv,cli;
struct ip_mreq mreq;
BYTE buf[MAXBUF], *pnews, *plogo;
unsigned char previd[10];
int datalen, first=1;
BYTE btPacketID=1;
unsigned int len1, len2;

memset(previd, 0 , 10);
bzero(&srv, sizeof(srv));
srv.sin_family = AF_INET;
srv.sin_port = htons(PUERTO);
if(inet_aton(GRUPO, &srv.sin_addr)<0) {
perror("inet_aton");
return -1;
}

if((s=socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
perror("inet_aton");
return -1;
}

if(bind(s, (struct sockaddr *)&srv, sizeof(srv)) < 0) {
perror("bind");
return -1;
}

if(inet_aton(GRUPO, &mreq.imr_multiaddr)<0) {
perror("inet_aton");
return -1;
}

mreq.imr_interface.s_addr = htonl(INADDR_ANY);

//下面这句出错
if(setsockopt(s, IPPROTO_IP, IP_ADD_MEMBERSHIP, &mreq, sizeof(mreq)) < 0)
{
perror("setsockopt");
return -1;
}
// end

n=sizeof(cli);
while(1)
{...};
return 0;
}


...全文
798 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
georgegccn 2006-11-05
  • 打赏
  • 举报
回复
你是为了增加多播功能吧?
你需要从编译一下内核,让它支持多播
wangwei850218 2006-10-27
  • 打赏
  • 举报
回复
难道是要root权限?

4,441

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧