首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

java (多网卡环境下)发送组播广播(multicastbroadcast)失败问题

java发送组播或广播并不复杂网上有很多文章,比如下面的两篇: 《Java实现组播(multicast)简单例子》 《Java 网络编程案例:使用 MulticastSocket 实现多点广播》...这些例子都大同小异,拿来就可以用,我刚开始使用组播/广播时就是这样抄个例子,编译,运行,收到消息—完美 但是,当我们的项目在开始运行时,发现问题来了:有时会收不到某台主机发送的组播,开始以为是路由器或交换阻止组播通过...经过反复测试,发现了规律,当电脑上有多块网卡(虚拟网卡也算)时,就有可能无法发出组播数据,但自己可以收到自己发送的组播/广播。 哇哦,原来与多网卡环境有关。...因为这个原因,对于多网卡环境下,发送广播或组播就必须要指定用哪块网卡发送。...所以我的解决办法就是:遍历所有物理网卡,在每一块网卡上都把组播或广播数据发送一遍,接收组播时将要明确将每一块物理网卡加入到组播地址中。

3.7K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    如何在 Linux 终端上向登录用户发送广播消息?

    Linux 系统中,您可以使用广播消息功能向当前登录的用户发送通知或警告。广播消息可以用于系统管理员向所有用户发送重要信息,或者用于协调团队成员之间的通信。...本文将详细介绍如何在 Linux 终端上向登录用户发送广播消息,并提供相应的示例。使用 wall 命令发送广播消息Linux 提供了 wall 命令,用于向所有登录用户发送广播消息。...下面是使用 wall 命令发送广播消息的基本语法:wall [消息内容]图片消息内容是您想要发送给用户的文本信息。...注意事项广播消息通常会打断用户的终端会话,因此请确保您的消息内容是重要且需要立即注意的。广播消息只能发送给当前登录的用户,对于远程用户或未登录的用户无效。...广播消息的发送需要 root 或具有相应权限的用户才能执行。结论使用 wall 命令可以在 Linux 终端上向登录用户发送广播消息。这是一种向所有用户发送通知或警告的简单而有效的方式。

    1.7K40

    Linux内核网络udp数据发送(一)

    前言 本文首先从宏观上概述了数据发送的流程,接着分析了协议层注册进内核以及被socket的过程,最后介绍了通过 socket 发送网络数据的过程。 2....数据发送宏观视角 从宏观上看,一个数据从用户程序到达硬件网卡的整个过程如下: 使用系统调用(如 sendto,sendmsg 等)写数据 数据穿过socket 子系统,进入socket 协议族(protocol...ARP 缓存表中,将触发一次 ARP 广播来查找 MAC 地址 穿过协议层,packet 到达设备无关层(device agnostic layer) 使用 XPS(如果启用)或散列函数选择发送队列...(dest)); 该系统调用穿过Linux 系统调用(system call)层,最后到达net/socket.c中的这个函数: /* * Send a datagram to a given...总结 了解Linux内核网络数据发送的详细过程,有助于我们进行网络监控和调优。本文只分析了协议层的注册和通过 socket 发送数据的过程,数据在传输层和网络层的详细发送过程将在下一篇文章中分析。

    4.2K51

    25 张图,拆解 Linux 网络发送过程 (1)

    带着这三个问题,我们开始今天对 Linux 内核网络发送过程的深度剖析。还是按照我们之前的传统,先从一段简单的代码作为切入。...用户请求处理 dosometing(); // 给用户返回结果 send(cfd, buf, sizeof(buf), 0); } 今天我们来讨论上述代码中,调用 send 之后内核是怎么样把数据发送出去的...本文基于Linux 3.10,网卡驱动采用Intel的igb网卡举例。 一、Linux 网络发送过程总览 我觉得看 Linux 源码最重要的是得有整体上的把握,而不是一开始就陷入各种细节。...我这里先给大家准备了一个总的流程图,简单阐述下 send 发送了的数据是如何一步一步被发送到网卡的。 ?...网卡在发送完毕的时候,会给 CPU 发送一个硬中断来通知 CPU。更完整的流程看图: ?

    1.1K21

    Linux中一个网络发送接收流程

    Linux发送HTTP网络图像 图像解析 写入套接字缓冲区(添加TcpHeader) 用户态进程通过write()系统调用切到内核态将用户进程缓冲区中的HTTP报文数据通过Tcp Process处理程序为...struct sk_buff 结构体的链表组成,其中一个sk_buff数据结构对应一个网络;这个结构体后面会详细讲,是Linux实现网络协议栈的核心数据结构。...2. sk_buff数据结构解析 通过对sk_buff数据结构解析,窥见Linux中的一些设计思想; 进行协议头的增添 我们知道,按照网络栈的设定,发送网络时,每经过一层,都会增加对应协议层的协议首部...我们在创建套接字的时候,通过SO_SENDBUF指定了发送缓冲区的大小,如果设置了大小为2048KB,则Linux在真实创建的时候会设置大小2048*2=4096,因为linux除了要考虑用户的应用层数据...不同的网络发送函数有几次拷贝?

    2K30

    Linux内核网络UDP数据发送(四)——Linux netdevice 子系统

    前言 在继续分析 dev_queue_xmit 发送数据之前,我们需要了解以下重要概念。...Linux 支持流量控制(traffic control)的功能,此功能允许系统管理员控制数据如何从机器发送出去。流量控制系统包含几组不同的 queue system,每种有不同的排队特征。...可以将 qdisc 视为调度程序, qdisc 决定数据发送时间和方式。 Linux 上每个 device 都有一个与之关联的默认 qdisc。...__dev_xmit_skb 现在我们带着排队规则 qdisc、网络设备 dev 和发送队列 txq 三个变量来到 __dev_xmit_skb,net/core/dev.c: static inline...如果标志已禁用,将强制对 skb 进行引用计数 调用 qdisc_bstats_update 更新 qdisc 发送的字节数和数统计 调用 sch_direct_xmit 用于发送数据

    3.4K11

    25 张图,一万字,拆解 Linux 网络发送过程

    一、Linux 网络发送过程总览 我觉得看 Linux 源码最重要的是得有整体上的把握,而不是一开始就陷入各种细节。...4.3 网络层发送处理 Linux 内核网络层的发送的实现位于 net/ipv4/ip_output.c 这个文件。传输层调用到的 ip_queue_xmit 也在这里。...(T 代表 transmit 传输) 软中断的入口代码我这里也不详细扒了,感兴趣的同学参考《图解Linux网络接收过程》一文中的 3.2 小节 - ksoftirqd内核线程处理软中断。...具体初始化过程参见《图解Linux网络接收过程》一文中的 2.4 节,网卡驱动初始化。...在《图解Linux网络接收过程》 一文中的 3.1 和 3.2 小节,我们详细讲述过硬中断和软中断的处理过程。 在发送完成硬中断里,会执行 RingBuffer 内存的清理工作,如图。 ?

    2.9K52

    C 语言实现 DNS 协议的数据发送和接收

    代码实现话说回来,如果想要真正实地的发送 DNS 协议首先就是了解数据的结构。DNS 数据中有报文头部和报文内容两部分,报文头部内容如下:其中前三行是报文头部,后边是报文内容。...最后就是简单的协议的发送和接受了。不过在这之前先进行一个宏定义,定义一下我们的端口和服务器地址。...slen = sendto(sockfd, request, length, 0, (struct sockaddr*)&servaddr, sizeof(struct sockaddr)); //发送到...图中是一个 dns 的数据情况,两个发送询问 s19.cnzz.com 另一个返回数据。...我们先看发送数据的头部:数据是应用层的数据,所以在数据内容最下方,上述图片是协议头部,跟我的结构体一摸一样,其中 id 是 0x1209,flags 是 0x0100 , questions 是

    23710

    Linux BSP实战课(网络篇):数据发送过程

    本文将介绍在Linux系统中,以一个UDP的接收过程作为示例,介绍数据是如何一步一步从应用程序到网卡并最终发送出去的。 socket层 socket(...)...如果该socket已经绑定了源IP,但根据路由表,从这个源IP对应的网卡没法到达目的地址,则该会被丢弃,于是数据发送失败,sendto函数将返回错误。...,这里不做详细介绍,其大概流程如下: 将skb放入网卡自己的发送队列 通知网卡发送数据 网卡发送完成后发送中断给CPU 收到中断后进行skb的清理工作 在网卡驱动发送数据过程中,会有一些地方需要和netdevice...从sendto函数的帮助文件里面看到这样一句话:(Normally, this does not occur in Linux....满的时候,会给上层调用返回NETDEV_TX_BUSY packet taps(AF_PACKET): 当第一次发送数据和重试发送数据时,都会经过这里。

    55520

    25 张图,一万字,拆解 Linux 网络发送过程

    一、Linux 网络发送过程总览 我觉得看 Linux 源码最重要的是得有整体上的把握,而不是一开始就陷入各种细节。...4.3 网络层发送处理 Linux 内核网络层的发送的实现位于 net/ipv4/ip_output.c 这个文件。传输层调用到的 ip_queue_xmit 也在这里。...(T 代表 transmit 传输) 软中断的入口代码我这里也不详细扒了,感兴趣的同学参考《图解Linux网络接收过程》一文中的 3.2 小节 - ksoftirqd内核线程处理软中断。...具体初始化过程参见《图解Linux网络接收过程》一文中的 2.4 节,网卡驱动初始化。...在《图解Linux网络接收过程》 一文中的 3.1 和 3.2 小节,我们详细讲述过硬中断和软中断的处理过程。 在发送完成硬中断里,会执行 RingBuffer 内存的清理工作,如图。

    3.1K23

    Linux内核网络UDP数据发送(三)——IP协议层分析

    前言 Linux内核网络 UDP 协议层通过调用 ip_send_skb 将 skb 交给 IP 协议层,本文通过分析内核 IP 协议层的关键函数来分享内核数据发送在 IP 协议层的处理,并分享了监控...出于讨论目的,我们假设 nf_hook 返回 1,表示调用者(在这种情况下是 IP 协议层)应该自己发送数据。 3.2 目的(路由)缓存 dst 代码在 Linux 内核中实现协议无关的目标缓存。...发送小于或等于该路由的 MTU 的意味着可以避免 IP 分片,这是推荐设置,因为数据分片会消耗系统资源,而避免分片看起来很容易:只需发送足够小的不需要分片的数据。...总结 Linux内核网络数据发送时,主要用到 ip_send_skb、 ip_local_out、ip_output、ip_finish_output、ip_finish_output2、 dst_neigh_output...等函数,本文通过分析这些函数来分享Linux内核数据发送在 IP 层的处理,并对 IP 层进行了数据监控。

    3.2K21

    Linux内核网络udp数据发送(二)——UDP协议层分析

    前言 本文分享了Linux内核网络数据发送在UDP协议层的处理,主要分析了udp_sendmsg和udp_send_skb函数,并分享了UDP层的数据统计和监控以及socket发送队列大小的调优。...setsockopt 可以在socket 级别设置发送的 IP_TTL和 IP_TOS。而辅助消息允许在每个数据级别设置 TTL 和 TOS 值。...Linux 内核会使用一个数组将 TOS 转换为优先级,后者会影响数据如何以及何时从 qdisc 中发送出去。...这有点复杂,因为用户可以通过 IP_PKTINFO 辅助消息 来指定发送的源地址或设备号,如前所述。...如果发送队列已经 没有足够的空间(超过计费限制),则 skb 并分配失败并返回错误。我们将在下面的调优部分中看到如何设置 socket 发送队列大小(txqueuelen) 更新错误统计信息。

    5.8K51

    c++ 网络编程(六)TCPIP LINUX下 socket编程 多播与广播 实现一次发送所有组客户端都能接收到

    因此,就引入了多播技术来解决这个问题,它可以同时向大量用户发送相同数据。...: 1,多播服务器端针对特定多播组,只需发送1次数据,该组内的所有所有客服端都能接收数据。...设置生存时间和加入多播组的方法 1,设置生存时间:只指服务端发送的数据最远能传递的距离,用整数表示,并且每经过1个路由器就减1,当为0时,该数据无法再被传递,只能销毁。...string.h> #include #include #include #define TTL 64 //数据生存时间...因为如果采用单播方式,逐个节点传输,有多少个目标节点,就会有多少次传送过程,这种方式显然效率极低,是不可取的;如果采用不区分目标、全部发送广播方式,虽然一次可以传送完数据,但是显然达不到区分特定数据接收对象的目的

    3.9K70

    本地广播与定向广播到底有什么区别?

    本地广播 本地广播 IP地址是:255.255.255.255 无论特定主机位于何种 IP 网络上,该主机始终可以使用该 IP 地址向本地网络上的每个节点发送数据。...在抓窗口中,我们可以看到主机 3、主机 2 和路由器的响应,但是我们看不到主机 1 的响应——该数据只是在内部发送,实际上从未到达线路。...此外,请注意 Wireshark 将该数据正确标记为broadcast数据——同样,发送到255.255.255.255的任何内容都是广播。...R3 知道这个数据包被发送到定向广播 IP 地址,将它收到的单播数据转换为广播数据,这就是主机 1 发送的单个单播数据如何传送到网络上的每个人。...IP,但很可能会失败

    79410

    Linux下网络编程-UDP协议探测在线好友

    UDP协议介绍 UDP协议 相对TCP协议来讲属于不可靠协议,UDP协议是广播方式发送数据,没有服务器和客户端的概念。...选项影响套接口的操作,诸如加急数据是否在普通数据流中接收,广播数据是否可以从套接口发送等等。 参数 sockfd:标识一个套接口的描述字。...UDP协议发送数据时,设置具有广播特性: 默认情况下socket不支持广播特性 char bBroadcast=1; setsockopt(s,SOL_SOCKET,SO_BROADCAST,(const...select.h> #include #include #include #define SEND_MSG "1314520" //发送的数据...案例: 使用UDP协议探测在线好友 前面几篇文章介绍了Linux下TCP协议设计的群聊天室的一个程序,如果想要知道同一个网络下有多少好友在线,就可以使用UDP协议进行广播探测。

    2.2K30

    “脏牛漏洞”恶意Root软件分析报告

    “脏牛”(Dirty COW)CVE-2016-5195漏洞是去年10月爆出的在Linux内核存在九年之久的提权漏洞,研究人员当时表示,攻击者可以利用该漏洞攻击Linux服务器,Linux随即发布补丁修复漏洞...一旦应用运行,恶意样本将与其CC服务器进行通信,从CC服务器检索可用的恶意代码并将其加载到应用中。...应用运行起来,恶意软件将收集用户的载体信息,当用户为中国境内用户 时,恶意 应用通过 发送sp订阅短信来 消耗用户的话费, 并且应用不停的去查询短信发送箱,当sp扣费短信发送成功后,应用会将短信发送 箱最近...4.报告漏洞是成功还是失败。 恶意样本联网下载的exploit利用文件.ziu文件,通过解压缩为.inf文件,文件名以“ulnz”开头,并包含多个ELF或脚本文件。...2.1.3 恶意样本推广的恶意子 恶意样本通过留下的后门,将恶意推广子推送安装到用户手机,执行恶意推广行为,疯狂的弹出广告,引诱 用户点击下载安装应用 , 获取推广费用。 恶意子: ? ?

    1.9K100
    领券