日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

广播发送与接收

發布時間:2023/12/13 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 广播发送与接收 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


//發送端

#include <iostream> ?

#include <stdio.h> ?
#include <string.h> ?
#include <winsock2.h>
??
using namespace std; ?
??
int main() ?

{ ??

? ? WSADATA wsaData;
? ? short version = MAKEWORD(2,0);
? ? WSAStartup(version,&wsaData);//初始化socket

? ? int sock = -1; ?
? ? if ((sock = socket(AF_INET, SOCK_DGRAM, 0)) == -1) ??
? ? { ? ??
? ? ? ? cout<<"socket error"<<endl; ??
? ? ? ? return false; ?
? ? } ? ??
? ? ??
? ? const int opt = 1; ?
? ? //設置該套接字為廣播類型, ?
? ? int nb = 0; ?
? ? nb = setsockopt(sock, SOL_SOCKET, SO_BROADCAST, (char *)&opt, sizeof(opt)); ?
? ? if(nb == -1) ?
? ? { ?
? ? ? ? cout<<"set socket error..."<<endl; ?
? ? ? ? return false; ?
? ? } ?
??
? ? struct sockaddr_in addrto; ?
? ? bzero(&addrto, sizeof(struct sockaddr_in)); ?
? ? addrto.sin_family=AF_INET; ?
? ? addrto.sin_addr.s_addr=htonl(INADDR_BROADCAST); ?
? ? addrto.sin_port=htons(6000); ?
? ? int nlen=sizeof(addrto); ?
??
? ? while(1) ?
? ? { ?
? ? ? ? sleep(1); ?
? ? ? ? //從廣播地址發送消息 ?
? ? ? ? char smsg[] = {"broadcast msg"}; ?
? ? ? ? int ret=sendto(sock, smsg, strlen(smsg), 0, (sockaddr*)&addrto, nlen); ?
? ? ? ? if(ret<0) ?
? ? ? ? { ?
? ? ? ? ? ? cout<<"send error...."<<ret<<endl; ?
? ? ? ? } ?
? ? ? ? else ?
? ? ? ? { ? ? ? ??
? ? ? ? ? ? printf("ok "); ? ?
? ? ? ? } ?
? ? } ?
??
? ? return 0; ?

} ?



//接收端

#include <iostream> ?
#include <stdio.h> ?
#include <string.h> ?
#include <winsock2.h>
??
using namespace std; ?
??
int main() ?
{ ?
? ? WSADATA wsaData;
? ? short version = MAKEWORD(2,0);
? ? WSAStartup(version,&wsaData);//初始化socket

? ? // 綁定地址 ?
? ? struct sockaddr_in addrto; ?
? ? memset(&addrto, 0, sizeof(struct sockaddr_in)); ?
? ? addrto.sin_family = AF_INET; ?
? ? addrto.sin_addr.s_addr = htonl(INADDR_ANY); ?
? ? addrto.sin_port = htons(6000); ?
? ? ??
? ? // 對端地址 ?
? ? struct sockaddr_in from; ?
? ? memset(&from, 0, sizeof(struct sockaddr_in)); ?
? ? ??
? ? int sock = -1; ?
? ? if ((sock = socket(AF_INET, SOCK_DGRAM, 0)) == -1) ??
? ? { ? ??
? ? ? ? cout<<"socket error"<<endl; ??
? ? ? ? return false; ?
? ? } ? ??

? ? const int opt = 1; ?
? ? //設置該套接字為廣播類型, ?
? ? int nb = 0; ?
? ? nb = setsockopt(sock, SOL_SOCKET, SO_BROADCAST, (char *)&opt, sizeof(opt)); ?
? ? if(nb == -1) ?
? ? { ?
? ? ? ? cout<<"set socket error..."<<endl; ?
? ? ? ? return false; ?
? ? } ?

? ? if(bind(sock,(struct sockaddr *)&(addrto), sizeof(struct sockaddr_in)) == -1) ??
? ? { ? ??
? ? ? ? cout<<"bind error..."<<endl; ?
? ? ? ? return false; ?
? ? } ?

? ? int len = sizeof(sockaddr_in); ?
? ? char smsg[100] = {0}; ?

? ? while(1) ?
? ? { ?
? ? ? ? //從廣播地址接受消息 ?
? ? ? ? int ret=recvfrom(sock, smsg, 100, 0, (struct sockaddr*)&from,&len); ??
? ? ? ? if(ret<=0) ?
? ? ? ? { ?
? ? ? ? ? ? cout<<"read error...."<<sock<<endl; ?
? ? ? ? } ?
? ? ? ? else ?
? ? ? ? { ? ? ? ??
? ? ? ? ? ? printf("%s\n", smsg); ? ??
? ? ? ? } ?

? ? } ?

? ? return 0; ?
}?

?

轉載于:https://www.cnblogs.com/dyllove98/p/3223618.html

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的广播发送与接收的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。