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得到廣播的...