linux網路程式設計 廣播

2021-09-27 03:18:07 字數 1886 閱讀 8134

recv

#include #include #include #include #include #include #include /* see notes */

#include #include #include #include #define myport 5009

#define myaddr "192.168.1.34"

void err_fun(int line, char *funnam, int err_no)

int main(void)

; int skfd = -1, ret = -1;

struct sockaddr_in myaddr = ;

struct sockaddr_in sndaddr = ;

skfd = socket(pf_inet, sock_dgram, 0);

if(skfd < 0) err_fun(__line__, "socket", errno);

bzero(&myaddr, sizeof(myaddr));

myaddr.sin_family = af_inet;

myaddr.sin_port = htons(myport);

myaddr.sin_addr.s_addr = htons(inaddr_any);

= inet_addr(myaddr);

ret = bind(skfd, (struct sockaddr*)&myaddr, sizeof(myaddr));

if(ret < 0) err_fun(__line__, "bind", errno);

clen = sizeof(sndaddr);

while(1) }

return 0;

}

send
#include #include #include #include #include #include #include /* see notes */

#include #include #include #include #define rcvport 5009

#define brd_addr "192.168.1.255"//廣播位址

void err_fun(int line, char *funnam, int err_no)

int main(void)

; int skfd = -1, ret = -1;

struct sockaddr_in brdaddr = ;

skfd = socket(pf_inet, sock_dgram, 0);

if(skfd < 0) err_fun(__line__, "socket", errno);

int brdval = 1;

/* 套接字選項設定

引數1:套接字描述符

引數2:設定級別,sol_socket,對所有協議都有效,如果只

希望對某個協議設定,就是特殊級別,寫協議號

引數3:指定做什麼樣的功能設定

引數4:使設定生效,一般來說,傳乙個非零,就可以生效

引數5:第四個引數空間大小 */

ret = setsockopt(skfd, sol_socket, so_broadcast, &brdval, sizeof(4));

if(ret < 0) err_fun(__line__, "setsockopt", errno);

brdaddr.sin_family = af_inet;

brdaddr.sin_port = htons(rcvport);

brdaddr.sin_addr.s_addr = inet_addr(brd_addr);

while(1)

return 0;

}

Linux網路程式設計之廣播

1.概念 前面介紹的tcp,udp都是單播方式,即一對一.而廣播是一台主機向區域網內的所有主機傳送資料。這時,同一網段的所有主機都能接收到資料。傳送廣播包的步驟大致如下 1 確定乙個傳送廣播的介面,如eth0 2 確定廣播的位址,通過ioctl函式,請求碼設定為siocgifbrdaddr得到廣播的...

Linux網路程式設計之廣播

1.概念 前面介紹的tcp,udp都是單播方式,即一對一.而廣播是一台主機向區域網內的所有主機傳送資料。這時,同一網段的所有主機都能接收到資料。傳送廣播包的步驟大致如下 1 確定乙個傳送廣播的介面,如eth0 2 確定廣播的位址,通過ioctl函式,請求碼設定為siocgifbrdaddr得到廣播的...

Linux網路程式設計之廣播

1.概念 前面介紹的tcp,udp都是單播方式,即一對一.而廣播是一台主機向區域網內的所有主機傳送資料。這時,同一網段的所有主機都能接收到資料。傳送廣播包的步驟大致如下 1 確定乙個傳送廣播的介面,如eth0 2 確定廣播的位址,通過ioctl函式,請求碼設定為siocgifbrdaddr得到廣播的...