linux下組播的實現

2021-09-23 01:45:09 字數 2604 閱讀 5892

目前有三種通訊方式:單播(unicast)、廣播(broadcast)、組播(multicast)

單播解決了點對點通訊的需求;

廣播是點對多點的通訊,其存在兩個缺點:

1)只能在同一網段內實現廣播;

2)不能指定目的主機,所有網段內的主機都將收到廣播報文,存在頻寬浪費。

組播組可以是永久的也可以是臨時的。組播組位址中,有一部分由官方分配的,稱為永久組播組。永久組播組保持不變的是它的ip位址,組中的成員構成可以發生變化。永久組播組中成員的數量都可以是任意的,甚至可以為零。那些沒有保留下來供永久組播組使用的ip組播位址,可以被臨時組播組利用。

224.0.0.0~224.0.0.255 為預留的組播位址(永久組位址),位址224.0.0.0保留不做分配,其它位址供路由協議使用;

224.0.1.0~224.0.1.255 是公用組播位址,可以用於internet;欲使用需申請。

224.0.2.0~238.255.255.255 為使用者可用的組播位址(臨時組位址),全網範圍內有效;臨時的

239.0.0.0~239.255.255.255 為本地管理組播位址,僅在特定的本地範圍內有效。

hann@ubuntu:~/hann/test/multicast$ ip ad

1: lo: mtu 65536 qdisc noqueue state unknown group default qlen 1000

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

inet 127.0.0.1/8 scope host lo

valid_lft forever preferred_lft forever

inet6 ::1/128 scope host

valid_lft forever preferred_lft forever

2: ens33:

mtu 1500 qdisc pfifo_fast state up group default qlen 1000

link/ether 00:0c:29:d6:fc:b2 brd ff:ff:ff:ff:ff:ff

inet 192.168.52.128/24 brd 192.168.52.255 scope global ens33

valid_lft forever preferred_lft forever

inet6 fdf0:1124:445f::2e2/128 scope global

valid_lft forever preferred_lft forever

inet6 fdf0:1124:445f:0:184:5851:1ba7:4686/64 scope global deprecated noprefixroute dynamic

valid_lft 2802sec preferred_lft 0sec

inet6 fe80::3a9a:36ee:25cb:bd22/64 scope link

valid_lft forever preferred_lft forever

struct ip_mreqn ;
#include 

#include

#include

#include

#include if.h>

#define server_port

8000

#define client_port

9000

#define maxline

1500

#define group

"239.0.0.2"

int main

(void

)close

(sockfd)

;return0;

}

#include 

#include

#include

#include

#include if.h>

#define server_port

8000

#define client_port

9000

#define group

"239.0.0.2"

int main

(int argc, char *ar**)

close

(confd)

;return0;

}

src =

$(wildcard *

.c)targets =

$(patsubst %

.c,%,$

(src))cc

= arm-hisiv500-linux-gcc

cflags

=-wall -g

all:

$(targets)

$(targets):%

:%.c $(cc

) $<

-o $@ $

(cflags).

phony

:clean all

clean:

-rm -rf $

(targets)

linux下實現組播(socket)

組播提供了在網路中進行一對多的傳送的機制,組播可以是在乙個網段內,也可以是跨網段的,不過跨網段需要交換機 路由器等網路裝置支援組播。hosts可以在任何時間加入或者離開組播組,對於組播組的成員沒有所處位置的限制,也沒有數量的限制,d類網際網路位址是用於組播的 224.0.0.0 239.255.25...

linux下c 實現udp組播模式

組播 傳送的資訊,小組內所有成員都能同時接受到。組播發送端跟接收端的具體流程為 傳送方 a.建立socket socket fd socket af inet,sock dgram,0 if socket fd 0 b.設定傳送的群組的位址 set up the destination addres...

Zigbee組播的實現

typedef struct aps group t 2.對aps group t結構體賦值,示例如下 by default,all devices start out in group 1 void osal memcpy void dst,const void generic src,unsig...