C語言廣播的使用詳解_第1頁
C語言廣播的使用詳解_第2頁
C語言廣播的使用詳解_第3頁
C語言廣播的使用詳解_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第C語言廣播的使用詳解向子網(wǎng)中多臺計(jì)算機(jī)發(fā)送消息,并且子網(wǎng)中所有的計(jì)算機(jī)都可以接收到發(fā)送方發(fā)送的消息,每個廣播消息都包含一個特殊的IP地址,這個IP中子網(wǎng)內(nèi)主機(jī)標(biāo)志部分的二進(jìn)制全部為1(也就是網(wǎng)絡(luò)號是255)。

?a.只能在局域網(wǎng)中使用。

?b.客戶端需要綁定服務(wù)器廣播使用的端口,才可以接收到廣播消息。

只能在局域網(wǎng)中使用;

//設(shè)置廣播屬性的函數(shù)

intsetsockopt(intsockfd,intlevel,intoptname,constvoid*optval,socklen_t

optlen);

-參數(shù):

-sockfd:文件描述符

-level:SOL_SOCKET

-optname:SO_BROADCAST

-optval:int類型的值,為1表示允許廣播

-optlen:optval的大小

廣播代碼較UDP代碼需要做的改變:

服務(wù)端需要設(shè)置廣播屬性服務(wù)端不需要使用bind進(jìn)行綁定;客戶端需要綁定服務(wù)端使用的端口;

//Server

#includestdio.h

#includestdlib.h

#includeunistd.h

#includestring.h

#includearpa/inet.h

intmain(){

//1.創(chuàng)建一個通信的socket

intfd=socket(PF_INET,SOCK_DGRAM,0);

if(fd==-1){

perror("socket");

exit(-1);

//2.設(shè)置廣播屬性

intop=1;

setsockopt(fd,SOL_SOCKET,SO_BROADCAST,op,sizeof(op));

//3.創(chuàng)建一個廣播的地址

structsockaddr_incliaddr;

cliaddr.sin_family=AF_INET;

cliaddr.sin_port=htons(9999);

inet_pton(AF_INET,"192.168.193.255",cliaddr.sin_addr.s_addr);--注意網(wǎng)絡(luò)號使用255

//3.通信

intnum=0;

while(1){

charsendBuf[128];

sprintf(sendBuf,"hello,client....%d\n",num++);

//發(fā)送數(shù)據(jù)

sendto(fd,sendBuf,strlen(sendBuf)+1,0,(structsockaddr*)cliaddr,sizeof(cliaddr));

printf("廣播的數(shù)據(jù):%s\n",sendBuf);

sleep(1);

close(fd);

return0;

}

#includestdio.h

#includestdlib.h

#includeunistd.h

#includestring.h

#includearpa/inet.h

intmain(){

//1.創(chuàng)建一個通信的socket

intfd=socket(PF_INET,SOCK_DGRAM,0);

if(fd==-1){

perror("socket");

exit(-1);

structin_addrin;

//2.客戶端綁定本地的IP和端口

structsockaddr_inaddr;

addr.sin_family=AF_INET;

addr.sin_port=htons(9999);

addr.sin_addr.s_addr=INADDR_ANY;

intret=bind(fd,(structsockaddr*)addr,sizeof(addr));

if(ret==-1){

perror("bind");

exit(-1);

//3.通信

while(1){

charbuf[128];

//接收數(shù)據(jù)

intnum=recvfrom(fd,buf,sizeof(buf),0,NULL,NULL);

printf("serversay:%s\n",

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論