UDP實現廣播傳輸

2021-09-13 17:28:18 字數 1650 閱讀 2160

在生活中 ,廣播無處不在 ,如大街上上叫賣的商人,但是在網路中廣播是什麼樣子的呢?

網路上的廣播指:由一台主機向該主機所在子網內(同乙個區域網)的所有主機傳送資料的方式。如下圖的 1 號主機廣播給 2、3、4、5 號主機傳送資料:

實現廣播,離不開廣播位址,同乙個子網(區域網)的所有主機網絡卡都會接收所在網段廣播位址的資料報。廣播位址應用於區域網內的所有主機。

#include#include#include#include#include#includeint main(int argc,char *ar** )

struct sockaddr_in dest_addr;

bzero(&dest_addr,sizeof(dest_addr));

dest_addr.sin_family=af_inet;

dest_addr.sin_port=htons(port);

printf("send data to udp server%s :%d!\n",server_ip,port);

//設定套接字為廣播型別 這個很重要

int opt=1;

setsockopt(sockfd,sol_socket,so_broadcast,&opt,sizeof(opt));

char send_buf[512]="this is a broadcast data";

sendto(sockfd,send_buf,strlen(send_buf),0,(struct sockaddr*)&dest_addr,sizeof(dest_addr));//傳送資料

close(sockfd);

return 0;

}接下來寫乙個伺服器段用於接收:

在這#include

#include

#include

#include

#include

int main(int argc, char *ar**)

/*將套接字繫結到伺服器的網路位址上*/

if (bind(server_sockfd,(struct sockaddr *)&my_addr,sizeof(struct sockaddr))<0)

sin_size=sizeof(struct sockaddr_in);

printf("waiting for a packet...\n");

/*接收客戶端的資料並將其傳送給客戶端--recvfrom是無連線的*/

if((len=recvfrom(server_sockfd,buf,bufsiz,0,(struct sockaddr *)&remote_addr,&sin_size))<0)

printf("received packet from %s:\n",inet_ntoa(remote_addr.sin_addr));

buf[len]='\0';

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

/*關閉套接字*/

close(server_sockfd);

return 0;親測可用

原文udp廣播

UDP廣播socket實現

udp廣播 const int max buf len 255 int main int argc,char argv if lobyte wsadata.wversion 2 hibyte wsadata.wversion 2 建立socket socket connect socket conn...

UDP實現可靠傳輸

如何讓udp實現可靠傳輸 自定義通訊協議,在應用層定義一些可靠的協議,比如檢測包的順序,重複包等問題,如果沒有收到對方的ack,重新發包 udp沒有delievery garuantee,也沒有順序保證,所以如果你要求你的資料傳送與接受既要高效,又要保證有序,收包確認等,你就需要在udp協議上構建自...

UDP協議及UDP實現可靠傳輸

udp基於傳輸層 16位 2位元組 16位 2位元組 16位 2位元組 16位 2位元組 udp源埠號 udp目的埠號 udp長度 udp檢驗和資料 udp的傳輸過程類似於寄信 什麼時面向資料報 應用層交給udp多長的報文,udp原樣傳送,既不會拆分,也不會合併 老實巴交的 用udp傳輸100個位元...