很多區域網都定義了乙個特殊的保留位址, 稱為廣播位址. 當資訊頭中目的位址域的內容為廣播位址時, 該幀被區域網上所有計算機接收.
這個過程稱為廣播.合法的廣播位址就是主機的網路位址加上最大的主機號。網路位址通過機器的ip位址與子網掩碼按位與得出,我們
以ip位址為10.78.202.175 ,子網掩碼為255.0.0.0。
好了,說白了向區域網傳送廣播,就是向ip位址為255.255.255.255的指定埠傳送資料。當然,由於此ip的使用者根本就不存在,那麼,
你就只能選擇使用udp的方式傳送資料。
同時,當你將一組資料傳送到路由,它發現使用者的ip是255.255.255.255。那麼這時,它會立刻明白,好哇,原來你是想將資料發往整個
網路(這裡包括外網和內網),它當然不會允許你這麼幹,但是又不能不發,於是他就將資料發往內網的每個使用者。
1.首先建立socket
[cpp]view plain
copy
print?
cfd = socket(af_inet,sock_dgram,0)
2.udp預設不支援廣播,你需要開啟
[cpp]view plain
copy
print?
intn = 1;
// 0表示關閉屬性,非0表示開啟屬性
setsockopt(cfd,sol_socket,so_broadcast,&n,sizeof
(n));
3.設定你要講資料發給誰
[cpp]view plain
copy
print?
struct
sockaddr_in si;
si.sin_family = af_inet;
si.sin_port = htons(8000);
si.sin_addr.s_addr = inet_addr("255.255.255.255"
);
4.廢話少說,傳送資料吧
[cpp]view plain
copy
print?
sendto(cfd,buffer,buffer_size,0,(
struct
sockaddr *)&si,
sizeof
(si));
5.養成好習慣,最後被忘了關閉socket
[cpp]view plain
copy
print?
close(cfd);
1.開啟socket
[cpp]view plain
copy
print?
intcfd = socket(af_inet, sock_dgram, 0);
2.將你的socket與指定的埠繫結,用於接受資料,你懂得
[cpp]view plain
copy
print?
struct
sockaddr_in si;
si.sin_family = af_inet;
si.sin_port = htons(8000);//這裡的埠要與上面的埠保持一致,親,你注意到了沒?
si.sin_addr.s_addr = inaddr_any;
intret = bind(cfd, (
struct
sockaddr *)&si,
sizeof
(si));
3.好了,可以開始接受資料了[cpp]view plain
copy
print?
recv(cfd,buf,22,0);
4.還是那句話,用完記得還
[cpp]view plain
copy
print?
close(cfd);
源**:
傳送者:
[cpp]view plain
copy
print?
#include
#include
#include
#include
#include
intmain()
close(cfd);
return
0;
}
接受者:
[cpp]view plain
copy
print?
#include
#include /* see notes */
#include
#include
#include
intmain()
struct
sockaddr_in si;
intaddrlen =
sizeof
(si);
bzero(&si,addrlen);
si.sin_family = af_inet;
si.sin_port = htons(8000);
si.sin_addr.s_addr = inaddr_any;
//繫結
intret = bind(cfd, (
struct
sockaddr *)&si,
sizeof
(si));
if(ret == -1)
char
buf[22];
struct
sockaddr_in si_recv;
addrlen = sizeof
(si_recv);
bzero(&si_recv,addrlen);
si_recv.sin_family = af_inet;
si_recv.sin_port = htons(8000);
si_recv.sin_addr.s_addr = inaddr_any;
while
(1)
close(cfd);
return
0;
} **:
socket的區域網廣播
很多區域網都定義了乙個特殊的保留位址,稱為廣播位址.當資訊頭中目的位址域的內容為廣播位址時,該幀被區域網上所有計算機接收.這個過程稱為廣播.合法的廣播位址就是主機的網路位址加上最大的主機號。網路位址通過機器的ip位址與子網掩碼按位與得出,我們 以ip位址為10.78.202.175 子網掩碼為255...
區域網socket廣播資料報
在ipv4中報文的傳輸分為三種方式 單播,廣播,多播 兩者的區別就是,本地廣播在不知道目標主機的網路位址下,如果目標主機是在本地網路,可以傳送本地廣播,本地網路下的所有主機都能接收廣播。直接廣播是目標主機的網路位址知道,那該網路位址網段下的所有主機都能收到廣播,直接廣播更精確範圍更小些 初始化網路庫...
socket區域網傳輸檔案
server用於接收來自client傳送的檔案。server和client位於同乙個區域網內就可以進行通訊。檔案讀寫必須用二進位制方式。有client連線時,開始接收資料,儲存為檔案。include include include include include include using name...