当前位置: 首页 > news >正文

高端网站设计哪家公司好跨国网站

高端网站设计哪家公司好,跨国网站,汽配信息门户网站模板,做网站需要准备资料问题背景: 平台:Android 设备A:组播发送者,发送组播数据 设备B:组播接受者,接收组播数据 设备A与设备B通过有线连接,连接在设备B的eth0网卡上 问题: 设备B在没有通讯模块网卡的情况…

问题背景:

平台:Android
设备A:组播发送者,发送组播数据
设备B:组播接受者,接收组播数据
设备A与设备B通过有线连接,连接在设备B的eth0网卡上

问题:
设备B在没有通讯模块网卡的情况下收得到设备A的组播数据,一旦有了通讯模块的拨号存在,则收不到A的组播数据了。但设备B上通过抓包,是能确认有抓到组播数据进来,也就是说eth0的网卡上,组播数据是进来了

组播注册伪代码:

int listenSock = socket(AF_INET, SOCK_DGRAM, 0);if (-1 == listenSock){printf("Create socket failed! listenSock=%d\n", listenSock);return -1;}xint32_t opt = 1;
setsockopt(listenSock, SOL_SOCKET, SO_REUSEADDR, (const void *)&opt, sizeof(opt));struct sockaddr_in addr;
memset(&addr, 0, sizeof(addr));addr.sin_family = AF_INET;
addr.sin_port = htons(static_cast<uint16_t>(端口));
addr.sin_addr.s_addr = INADDR_ANY;if (bind(listenSock, reinterpret_cast<struct sockaddr*>(&addr), sizeof(addr)) == -1){printf("Bind sock failed!!!\n");close(listenSock);return -1;}struct ip_mreq group;
group.imr_multiaddr.s_addr = inet_addr("组播ip");
group.imr_interface.s_addr = INADDR_ANY;if (setsockopt(listenSock, IPPROTO_IP, IP_ADD_MEMBERSHIP, (char *)&group, sizeof(group)) < 0){close(listenSock);printf("Add membership fail! errno:%d\n", errno);return -2;}struct ifreq nif = {0};strcpy(nif.ifr_name, "eth0");if (setsockopt(listenSock, SOL_SOCKET, SO_BINDTODEVICE, (char *)&nif, sizeof(nif)) < 0){close(listenSock);printf("Bind interface=eth0 fail!, errno:%d\n", errno);return -1;}

通过以上代码,在存在通讯模块的时候是收不到的。也怀疑过是否是因为被添加了filter导致,后面也排除了,那么还有种可能,就是绑定网卡并没有生效,我们虽然socket绑定到了eth0,但组播的加入也涉及网卡,我们这个方式因顺序被加入到了其他网卡里,直接看修改,那么在添加组播组的时候也能绑定网卡,修改后的伪代码如下:

int listenSock = socket(AF_INET, SOCK_DGRAM, 0);if (-1 == listenSock){printf("Create socket failed!!! listenSock=%d\n", m_listenSock);return -1;}xint32_t opt = 1;setsockopt(listenSock, SOL_SOCKET, SO_REUSEADDR, (const void *)&opt, sizeof(opt));struct sockaddr_in localAddr;
memset(&localAddr, 0, sizeof(localAddr));
localAddr.sin_family = AF_INET;
inet_pton(AF_INET, "组播ip", &localAddr.sin_addr);
localAddr.sin_port = htons((uint16_t)端口);
localAddr.sin_addr.s_addr = htonl(INADDR_ANY);if (::bind(listenSock, reinterpret_cast<struct sockaddr*>(&localAddr), sizeof(localAddr)) == -1){printf("Bind sock failed!!!\n");close(listenSock);return -1;}struct ifreq nif;memset(&nif, 0, sizeof(ifreq));strcpy(nif.ifr_name, "eth0");if (::setsockopt(listenSock, SOL_SOCKET, SO_BINDTODEVICE, (char *)&nif, sizeof(ifreq)) < 0){close(listenSock);printf("Bind interface=eth0 fail!, errno:%d\n", errno);return -1;}//关键修改在这struct ip_mreqn group;group.imr_multiaddr.s_addr = inet_addr("组播ip");group.imr_address.s_addr = htonl(INADDR_ANY);group.imr_ifindex = if_nametoindex("eth0");//在添加组的时候, 指定网卡if (::setsockopt(listenSock, IPPROTO_IP, IP_ADD_MEMBERSHIP, (char *)&group, sizeof(group)) < 0){close(listenSock);printf("Add membership interface=eth0 fail!, errno:%d\n", errno);return -2;}

也看到了,结构体用得也不一样了,其实 ip_mreq 与 ip_mreqn时差不多的含义

//来源:#include <in.h>
/* Internet address. */
struct in_addr {__be32  s_addr;
};/* Request struct for multicast socket ops */
struct ip_mreq  {struct in_addr imr_multiaddr;   /* IP multicast address of group */ //组播组组地址struct in_addr imr_interface;   /* local IP address of interface */ // 组播组的的网卡ip, 对应的网卡能够接收对应多播组的数据包
};struct ip_mreqn {struct in_addr  imr_multiaddr;      /* IP multicast address of group */struct in_addr  imr_address;        /* local IP address of interface */ //组播组的的网卡ip, 对应的网卡能够接收对应多播组的数据包int     imr_ifindex;        /* Interface index */ //加入组播组的网卡index,优先级高于以上地址
};

可以看到以下,ip_mreqn明确多了一个网卡指定。我在使用ip_mreq的时候也尝试过将imr_interface指定为我eth0的ip来绑定,仍然无效。如果不是要收多个网卡的,可以使用以上方式修改,记录借鉴

http://www.yayakq.cn/news/426614/

相关文章:

  • 昆山建设网站海口市龙华区核酸检测
  • 昆山网站开发的公司湖南学校网站建设
  • 手机搜索引擎排名东莞百度seo在哪
  • 斐讯n1 WordPress太原seo优化
  • 单位网站建设制作关于申请网站建设的请示
  • asp.net 2.0网站开发全程解析 下载软件开发app开发定制外包33
  • 本地建站教程杭州十大科技公司排名
  • 网站开发确认函建设团购网站费用
  • vs2005做的网站转换为2012html网站开发工具
  • 做网站怎么设置背景盲盒小程序源码
  • 网站怎么做视频背景比较大的做网站的公司有哪些
  • 网站建设云解析dns有什么用外贸推广方式有哪些
  • 网站怎样优化文章关键词app开发费用一览表
  • 长春设计网站网站建设方案书 阿里云
  • 网站建设背景怎么设置成江阴网页设计培训
  • ui培训的课程网站设计 seo
  • 杭州住房和城乡建设局网站首页工程技术研究中心网站建设要求
  • 做网站建设最好的公司是云捷配快速开发平台
  • 清远市清城区网站建设公司品牌画册设计公司
  • 怎么建立自己网站微信小程序代码生成器
  • 东莞三合一网站制作国家企业信息公示网官网(中国)
  • 中山论坛建站模板手机app下载大全
  • 哪个网站做网店好中国做网站正邦
  • 做网站的费用怎么录分录一个app安卓下载
  • 制作一个公司网站多少黄页网页的推广
  • 最专业的网站开发公司哪家最专业爱上链外链购买交易
  • 网站改版必要性没有证书编号
  • 企业建站系统费用学校学院网站建设意义
  • 项目经理资格证seopeixun com cn
  • 网站建设美橙proplayer wordpress