Linux C C 程式設計 Udp組播(多播)

2021-10-25 07:20:36 字數 2847 閱讀 8600

ip組播通訊必須依賴於ip多播位址,在ipv4中它是乙個d類ip位址,範圍從224.0.0.0239.255.255.255,並被劃分為區域性鏈結多播位址、預留多播位址和管理許可權多播位址三類:

預留多播位址為 224.0.1.0~238.255.255.255,可用於全球範圍(如internet)或網路協議;

管理許可權多播位址為 239.0.0.0~239.255.255.255,可供組織內部使用,類似於私有 ip 位址,不能用於 internet,可限制多播範圍。

#include

#include

#include

#include

#include

#include

#include

#include

#include

// 接收組播位址為224.0.0.88 的資訊

intmain

(int argc,

char

*ar**)

char group[16]

="224.0.0.88"

;// char group_1[16]="224.0.0.66";

struct sockaddr_in local_addr;

memset

(&local_addr,0,

sizeof

(local_addr));

local_addr.sin_family = af_inet;

local_addr.sin_addr.s_addr =

htonl

(inaddr_any)

; local_addr.sin_port =

htons

(8888);

int ret =

bind

(socked,

(struct sockaddr*

)&local_addr,

sizeof

(local_addr));

if(ret<0)

struct ip_mreq mreq;

mreq.imr_multiaddr.s_addr =

inet_addr

(group)

; mreq.imr_inte***ce.s_addr =

htonl

(inaddr_any);/*

** int setsockopt(int sockfd, int level, int optname,

const void *optval, socklen_t optlen);

* param:

* optname

* * ip_multicast_loop 支援多播資料回送

* * ip_add_membership 加入多播組

* * ip_drop_membership 離開多播組

* optval

* * ip_multicast_loop 選項對應傳入 unsigned int 來確認是否支援多播資料回送

* * ip_add_membership 傳入 ip_mreq

* * ip_drop_membership 傳入 ip_mreq

** */

ret=

setsockopt

(socked,ipproto_ip,ip_add_membership,

&mreq,

sizeof

(mreq));

if(ret<0)

else

char buf[

1024];

int length=0;

struct sockaddr_in sender;

socklen_t sender_len=

sizeof

(sender)

;while

(true

)setsockopt

(socked, ipproto_ip, ip_drop_membership,

&mreq,

sizeof

(mreq));

close

(socked)

;return0;

}

#include

#include

#include

#include

#include

#include

#include

#include

#include

//向組播位址為224.0.0.88的組傳送資訊

intmain()

struct sockaddr_in remote_addr;

memset

(&remote_addr,0,

sizeof

(remote_addr));

remote_addr.sin_family=af_inet;

remote_addr.sin_addr.s_addr=

inet_addr

(group_addr)

; remote_addr.sin_port=

htons

(8888);

char buf[

1024]=

"this is a group udp"

;int length=0;

while(1

)close

(socked)

;return0;

}

UDP的組播與多播

在前面已經記錄過udp的單播模式,即客戶端只能與服務端單獨對接。接下來介紹udp的另外兩種通訊方式 udpsocket newqudpsocket this udpsocket bind qhostaddress 192.168.1.100 45454 qbytearray datagram mul...

linux程式設計udp組播

linux程式設計udp通訊 linux程式設計udp廣播 使用範圍 結構體struct ip mreqn struct in addr 組播位址 224.0.0.0 224.0.0.255 預留的組播位址 永久組位址 位址224.0.0.0保留 不做分配,其它位址供路由協議使用 224.0.1.0...

UDP組播接收

網路中的一台主機如果希望能夠接收到來自網路中其它主機發往某乙個組播組的資料報,那麼這麼主機必須先加入該組播組,然後就可以從組位址接收資料報。在廣域網中,還涉及到路由器支援組播路由等,但本文希望以乙個最為簡單的例子解釋清楚協議棧關於組播的乙個最為簡單明瞭的工作過程,甚至,我們不希望涉及到 igmp包。...