網路程式設計 Linux多播簡單實現

2021-07-13 03:32:11 字數 2023 閱讀 6036

在測試多時先確定測試的介面(網絡卡)是否已經開啟多播功能,如下:

圖.1其中running multicast表示開啟了多播功能,可用ifconfig命令開啟

多播資料傳送端:

#include #include #include #include #include #include #include #include #include int main(int argc, char *argv)

struct sockaddr_in servsend;

socklen_t len = sizeof(struct sockaddr_in);

int ret;

int sendfd = socket(af_inet, sock_dgram, 0);

/* 目的位址為多播位址 */

servsend.sin_addr.s_addr = inet_addr(argv[1]);

servsend.sin_port = htons(atoi(argv[2]));

servsend.sin_family = af_inet;

u_char off = 1;

/*開啟外出資料報的回饋*/

setsockopt(sendfd, ipproto_ip, ip_multicast_loop, &off, sizeof(off));

/* 選擇多播外出介面 */

char buf[256];

struct in_addr in;

in.s_addr = inet_addr("192.168.1.115");

setsockopt(sendfd, ipproto_ip, ip_multicast_if, &in, sizeof(in));

while (1)

sleep(2);

}return 0;

}

多播資料接受端:

#include #include #include #include #include #include #include #include #include int main(int argc, char *argv)

int ret;

struct sockaddr_in servrecv;

int len = sizeof(servrecv);

int recvfd = socket(af_inet, sock_dgram, 0);

const int on = 1;

ret = setsockopt(recvfd, sol_socket, so_reuseaddr, &on, sizeof(on));

if (ret < 0)

servrecv.sin_port = htons(atoi(argv[2]));

servrecv.sin_addr.s_addr = htonl(inaddr_any);

servrecv.sin_family = af_inet;

ret = bind(recvfd, (struct sockaddr *)&servrecv, len);

if (ret < 0)

/* 加入多播組 */

struct ip_mreq mreq;

mreq.imr_multiaddr.s_addr = inet_addr(argv[1]);

mreq.imr_inte***ce.s_addr = inet_addr("192.168.1.115");

ret = setsockopt(recvfd, ipproto_ip, ip_add_membership, &mreq, sizeof(mreq));

if (ret < 0)

struct sockaddr_in in;

while (1)

printf("%s\n", buf);

} return 0;

}

網路程式設計多播 Multicast

ip多播 也稱多址廣播或組播 技術,是一種允許一台或多台主機 多播源 傳送單一資料報到多台主機 一次的,同時的 的tcp ip網路技術。通俗點講,多播也稱組播,大概可以理解為分組廣播的意思,是介於單播和廣播之間的一種通訊機制,使用多播方式,可以實現對區域網內一組特定的主機進行通訊,對區域網節點分組,...

UNIX網路程式設計 廣播與多播

前言 繼續補上我的部落格,這幾天專注把 unix網路程式設計 的內容總結。1.單播與廣播的比較 單播 過程 中間主機的乙太網介面看到該幀,並將它的目的乙太網與自己的乙太網位址進行比較。由於二者不相等,介面便忽略該幀。因此,單播幀不會對這台主機造成任何額外開銷,因為忽略它們的是介面而不是主機。右邊主機...

TCP IP網路程式設計 多播與廣播

前言 想想這麼一種情況,網路電台可能需要同時向成千上萬的使用者傳輸相同的資料,如果用我們以前講過的傳輸形式,每個使用者都傳輸一次,這樣肯定是不合理的。因此,就引入了多播技術來解決這個問題,它可以同時向大量使用者傳送相同資料。其基本原理是這樣的 有個多播組,只要加入這個組裡的所有客服端,服務端傳送的資...