当前位置:  技术问答>linux和unix

Linux 加入多个组播, 并绑定同一个端口时问题

    来源: 互联网  发布时间:2016-07-30

    本文导语:  当我们的程序需要加入不同的组播,但在同一端口上接收数据时,套接字之间的数据会出现"窜线"现象 如加入 225.0.0.10:5000和225.0.0.11:5000, 按理说,第一个套接字只能接收到网络中发往"225.0.0.10"和端口5000的数据, 第二个...

当我们的程序需要加入不同的组播,但在同一端口上接收数据时,套接字之间的数据会出现"窜线"现象

如加入 225.0.0.10:5000和225.0.0.11:5000, 按理说,第一个套接字只能接收到网络中发往"225.0.0.10"和端口5000的数据,

第二个套接字只能接收网络中发往"225.0.0.11"和端口5000的的数据,但在Linux(SuSE)上,却没有看到期望的结果,此时两个

套接字都可以互相接收到对方的数据,而Windows上不会出现此现象.能否说这是Linux内核TCP/IP协议的实现有BUG?

    解决办法简单:

    除了加入多播组 ,还需要绑定此组播IP到自身的套接字上,如:
   ...
   struct sockaddr_in addr;
   addr.sin_addr.s_addr = inet_addr("225.0.0.10"); 
   bind(s, (sockaddr*)&addr, sizeof(struct sockaddr));
   ...
   //add multicast
   ...

|
其实单播也一样, 你用INADDR_ANY:5000绑定一个socket, 如果你的机器有两个网卡,IP分别为192.168.1.1, 192.168.1.2, 那么不管是发往192.168.1.1:5000还是 192.168.1.2:5000,你的程序都可以收到. 一个道理

|
怀疑lz以前绑定ip时绑的是127.0.0.1 或者INADDR_ANY

    
 
 

您可能感兴趣的文章:

  • 怎么在linux下实现软硬件的绑定和操作系统与硬件的绑定?请高人指教...谢了..
  • LINUX主机绑定进行授权管理,怎么样才有效?
  • 请教一个关于linux系统中断亲缘性绑定的问题
  • Linux 双网卡绑定 -> 求高手
  • 关于端口绑定(linux为服务端,windows为客户端)后无法立即释放的问题
  • Linux作透明代理服务器,双网卡,要求使用该代理的用户绑定ip,如何实现?
  • 请问在LINUX中如何一块网卡绑定多个IP?
  • linux下如何将IP与网卡的MAC地址绑定呢?
  • linux的双网卡绑定遇到的问题
  • 求教,图形化安装linux9后,并绑定ip为192.168.0.18,在服务配置启动httpd服务时报错。
  • linux下单网卡绑定双IP咋就不灵了呢?
  • linux单网卡,绑定双ip地址的访问问题
  • 关于 linux socket的绑定出口的问题,希望高手帮忙解决
  • Linux DHCP如何绑定指定的网卡???
  • Linux下的80端口被apache的服务占了,如何才能是80端口默认访问的是tomcat?
  • Linux下的Socket通信如何断开连接的端口从而实现重复使用该端口
  • linux中端口不能访问,我该怎么消除限制让它可以访问所有端口
  • 怎么知道自己的redhat linux 的端口是否已经开放,比如我想看看80和21端口是否开放?
  • linux下如何监听自定义端口?包括端口状态和数据
  • 我要在LINUX(REDHAT)下安装邮件系统,但是提示我SMTP端口和POP3端口正在使用中,该如何?
  • 请问:我正在编linux下的openssl程序,它是要用443号端口的,调试时却不通,应是linux系统占用了该端口,我怎可停了它以作我用,或停了系统的op
  • 如何配置linux可以让普通用户使用80端口或1024以下的端口?
  • linux 如何让端口一直处于打开状态 比如 nc -lp 12000& 打开12000端口 可是马上就关闭了 现在可有办法让其一直处于打开状态
  • redhat linux7.3怎么查端口是否已被系统使用啊?? 我正要用ssl的一个代理模块stunnel-4.03,它默认要用443号端口,客户机连接不能通,但改成
  • LINUX 访问网页不要端口
  • linux 下 java应用程序开不了3000端口监听 ?
  • 在linux下能实现多端口映射吗?
  • linux端口问题求教
  • linux 80端口不能用(急)
  • linux打开udp端口
  • Linux下普通用户为何无法使用2000以下端口?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • linux下grep命令实现查找多个关键字(与关系和或关系)
  • 我写了个linux下的网络程序,程序在多个电脑间通信,但是我没有多个电脑,怎么调试这样的程序啊?
  • [提问]Linux下如何把多个.a文件编译一个.so文件,或者把多个.so文件编译成一个.so文件
  • linux系统支持多个网卡同时工作吗?
  • 一个LINUX的驱动程序中,能不能注册多个中断?
  • linux下crontab操作多个文件 iis7站长之家
  • linux下如何设置文件夹权限属于多个组?
  • linux下如何做象windows下的OnTimer一样,多个定时器用一个回调函数!!!!!!!
  • 请教linux下管理多个socket用什么,难道只能用select?
  • linux 只有SIGUSR1和SIGUSR2,如果有多个应用程序需要信号,怎么办?
  • linux下如何区分多个USB键盘的输入?
  • 一台linux服务器安一个MYSQL 好还是多个好
  • LINUX下访问oracle时sleeping的线程过多,达到300多个,造成系统拥堵!
  • 关于Linux的多个版本的问题???
  • linux9.0下可否实现多个域名邮箱的转发代理设置
  • swap分区可以被多个linux系统共用吗?
  • 让 LINUX 一个网卡上有 多个 IP 地址
  • 请问如何在linux下一个工程里面使用多个cpp文件
  • linux是不是不支持多个发行版共存?例如 redhat 和 red flag?
  • linux下crontab操作多个文件
  • linux自启动同时执行多个程序
  • linux c/c++ IP字符串转换成可比较大小的数字
  • 在win分区上安装linux和独立分区安装linux有什么区别?可以同时安装吗?(两个linux系统)
  • linux哪个版本好?linux操作系统版本详细介绍及选择方案推荐
  • 在虚拟机上安装的linux上,能像真的linux系统一样开发linux程序么?
  • secureCRT下Linux终端汉字乱码解决方法
  • 我重装window后,把linux的引导区覆盖了,进不了linux怎么办?急啊,望热心的人帮助 (现在有linux的盘)
  • Linux c字符串中不可打印字符转换成16进制
  • 安装vmware软件,不用再安装linux系统,就可以模拟linux系统了,然后可以在其上学习一下LINUX下的基本操作 了?
  • Linux常用命令介绍:更改所属用户群组或档案属性
  • 红旗Linux主机可以通过127.0.0.1访问,但如何是连网的Win2000机器通过Linux的IP去访问Linux


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3