当前位置:首页 » 网页前端 » 脚本发送组播
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

脚本发送组播

发布时间: 2022-08-26 10:14:27

A. 通过shell脚本/bat批处理命令方式向其他服务器发送文件

scp或者rsync
批处理也可以用rsync,但是需要安装个windows的rsync包

B. 40、在Java中,如何实现组播通信

编辑一个java组播应用程序的过程如下

1. 创建一个用于发送和接收的MulticastSocket组播套接字对象
2. 创建一个指定缓冲区大小及组播地址和端口的DatagramPacket组播数据包对象
3. 使用组播套接字joinGroup(),将其加入到一个组播
4. 使用组播套接字的send()方法,将组播数据包对象放入其中,发送组播数据包.
或者
使用组播套接字的receive()方法,将组播数据包对象放入其中,接收组播数据包
5. 解码组播数据包提取信息,并依据得到的信息作出响应String s = new String(dp.getData(), 0, dp.getLength());
6. 重复过程4和5,即在while循环中实现。
7. 使用组播套接字的leaveGroup()方法,离开组播组;关闭组播套接字

接收组播数据包程序:
Java代码
public class MulticastReceived {

public static void main(String[] args) throws Exception {
InetAddress group = InetAddress.getByName("224.0.0.4"); // 组播地址
int port = 4006; // 端口
MulticastSocket msr = null;
try {
msr = new MulticastSocket(port); // 1.创建一个用于发送和接收的MulticastSocket组播套接字对象
msr.joinGroup(group); // 3.使用组播套接字joinGroup(),将其加入到一个组播
byte[] buffer = new byte[8192];
System.out.println("接收数据包启动!(启动时间:)" + new java.util.Date() + ")");
while (true) {
DatagramPacket dp = new DatagramPacket(buffer, buffer.length); // 2.创建一个指定缓冲区大小及组播地址和端口的DatagramPacket组播数据包对象
msr.receive(dp); // 4.使用组播套接字的receive()方法,将组播数据包对象放入其中,接收组播数据包
String s = new String(dp.getData(), 0, dp.getLength()); // 5.解码组播数据包提取信息,并依据得到的信息作出响应
System.out.println(s);
}
} catch (IOException e) {
e.printStackTrace();

} finally {
if (msr != null) {
try {
msr.leaveGroup(group); // 7.使用组播套接字的leaveGroup()方法,离开组播组
msr.close(); // 关闭组播套接字
} catch (IOException e) {
}
}
}
}
}

发送组播数据包程序:
Java代码
public class MulticastSender {

public static void main(String[] args) throws Exception {
InetAddress group = InetAddress.getByName("224.0.0.1"); // 组播地址
int port = 4000; // 端口
MulticastSocket mss = null;
try {
mss = new MulticastSocket(port); // 1.创建一个用于发送和接收的MulticastSocket组播套接字对象
mss.joinGroup(group); // 3.使用组播套接字joinGroup(),将其加入到一个组播
byte[] buffer = new byte[8192];
System.out.println("接收数据包启动!(启动时间:)" + new java.util.Date() + ")");
while (true) {
String message = "Hello" + new java.util.Date();
byte[] buffer2 = message.getBytes(); // 2.创建一个指定缓冲区大小及组播地址和端口的DatagramPacket组播数据包对象

DatagramPacket dp = new DatagramPacket(buffer, buffer.length, group, port);
// msr.receive(dp); //接收组播数据包

mss.send(dp); // 4.使用组播套接字的send()方法,将组播数据包对象放入其中,发送组播数据包
// String s = new String(dp.getData(), 0, dp.getLength()); //5.解码组播数据包提取信息,并依据得到的信息作出响应
System.out.println("发送数据包给" + group + ":" + port);
Thread.sleep(1000);
}
} catch (IOException e) {
e.printStackTrace();

} finally {
if (mss != null) {
try {
mss.leaveGroup(group); // 7.使用组播套接字的leaveGroup()方法,离开组播组
mss.close(); // 关闭组播套接字
} catch (IOException e) {
}
}
}
}
}

C. 什么是“单播”“组播”和“多播”

“单播”“组播”和“多播”意思是:

单播:用网络技术的术语来描述就是“单播”,此时信息的接收和传递只在两个节点之间进行,网络节点之间的通信就好像是人们之间的对话一样。如果一个人对另外一个人说话。

多播也称为“组播”:将网络中同一业务类型主机进行了逻辑上的分组,进行数据收发的时候其数据仅仅在同一分组中进行,其他的主机没有加入此分组不能收发对应的数据。

(3)脚本发送组播扩展阅读:

单播的缺点:

1. 服务器针对每个客户机发送数据流,服务器流量=客户机数量×客户机流量;在客户数量大、每个客户机流量大的流媒体应用中服务器无法支持如此庞大的数据流。

2. 现有的网络带宽是金字塔结构,城际省际主干带宽仅仅相当于其所有用户带宽之和的5%。如果全部使用单播协议,将造成网络主干不堪重负。

IP多播通信必须依赖于IP多播地址,在IPv4中它是一个D类IP地址,范围从224.0.0.0到239.255.255.255,并被划分为局部链接多播地址、预留多播地址和管理权限多播地址三类。

其中,局部链接多播地址范围在224.0.0.0~224.0.0.255这是为路由协议和其它用途保留的地址,路由器并不转发属于此范围的IP包;

预留多播地址为224.0.1.0~238.255.255.255,可用于全球范围(如Internet)或网络协议;管理权限多播地址为239.0.0.0~239.255.255.255,可供组织内部使用,类似于私有IP地址,不能用于Internet,可限制多播范围。

网络 - 多播

D. 请教UDP组播报文发送问题

更新一些信息:
更改组播地址发现:貌似
224.0.0.x
的组播报文可以发送出去,但是224.0.1.x的组播报文发送不出去。更新一些信息:
发送的报文是1588
V2
的组播报文。
奇怪的是这个报文对224.0.1.x的地址不能正确转发出去。自己解答一下,现在问题已经解决,原因是其中一个dev没有IP地址,造成内核经过br0转发出去的时候,不知道出口造成。

E. 如何在局域网使用组播(多播).

1、交换机开启多播功能。
2、ghostsrv和客户端的ghost要求版本同一。
3、最好先用ghostsrv采集母盘,成功率比较高。
组播(Multicast)传输:在发送者和每一接收者之间实现点对多点网络连接。如果一台发送者同时给多个的接收者传输相同的数据,也只需复制一份的相同数据包。它提高了数据传送效率。减少了骨干网络出现拥塞的可能性。

F. 华为云平台环境组播不通-11g rac 安装

./runcluvfy.sh stage -pre crsinst -n db1,db2 -verbose grid执行检查,发现存在组播无法通讯的情况,日志如下:

oracle提供了一个测试的脚本工具 mcasttest.pl

和华为云平台运维人员沟通后发现私有网卡的安全组配置为现在点对点ip的方式。所以导致组播地址无法通讯,修改安全组策略为不限制后再次进行测试组播可以正常通讯。

同时分享一个组播的测试工具参考mos文档《 Grid Infrastructure Startup During Patching, Install or Upgrade May Fail Due to Multicasting Requirement (Doc ID 1212703.1)

如何使用mcasttest, 前提节点间需要配置免密登陆 :

Note: Multicast based communication only needs to be successful on either the 230.0.1.0 address or the 224.0.0.251 address. A successful multicast communication on both addresses is not required. 另外通讯在230和224任意网络上面都可以,不需要全部能通。

G. 网络中的“组播”是什么意思

组播是一种数据包传输方式,当有多台主机同时成为一个数据包的接受者时,出于对带宽和CPU负担的考虑,组播成为了一种最佳选择。

组播和单播的区别?
为了让网络中的多个主机可以同时接受到相同的报文,如果采用单播的方式,那么源主机必须不停的产生多个相同的报文来进行发送,对于一些对时延很敏感的数据,在源主机要
产生多个相同的数据报文后,在产生第二个数据报文,这通常是无法容忍的。而且对于一台主机来说,同时不停的产生一个报文来说也是一个很大的负担。
如果采用组播的方式,源主机可以只需要发送一个报文就可以到达每个需要接受的主机上,这中间还要取决于路由器对组员和组关系的维护和选择。

组播和广播的区别?
如同上个例子,当有多台主机想要接收相同的报文,广播采用的方式是把报文传送到局域网内每个主机上,不管这个主机是否对报文感兴趣。这样做就会造成了带宽的浪费和主机的资源浪费。而组播有一套对组员和组之间关系维护的机制,可以明确的知道在某个子网中,是否有主机对这类组播报文感兴趣,如果没有就不会把报文进行转发,并会通知上游路由器不要再转发这类报文到下游路由器上。