时间:2021-05-20
本文实例讲述了C++实现广播通信的方法。分享给大家供大家参考。具体实现方法如下:
广播通信代码框架:
1. 协议都是:
复制代码 代码如下:SOCKET s = ::socket(AF_INET, SOCK_DGRAM, 0);
2. 服务端设置选项
复制代码 代码如下:BOOL bBroadcast = TRUE;
::setsockopt(s, SOL_SOCKET, SO_BROADCAST, (char*)&bBroadcast, sizeof(BOOL));
3. 服务端向255.255.255.255 这个广播地址发内容 客户端收听就可以了
服务端代码:
复制代码 代码如下:#include "InitSock.h"
#include <stdio.h>
VOID main()
{
CInitSock initSock;
SOCKET s = ::socket(AF_INET, SOCK_DGRAM, 0);
//设置广播就是设置这个选项
BOOL bBroadcast = TRUE;
::setsockopt(s, SOL_SOCKET, SO_BROADCAST, (char*)&bBroadcast, sizeof(BOOL));
//设置广播地址
SOCKADDR_IN bcast;
bcast.sin_family = AF_INET;
bcast.sin_port = htons(4567);
bcast.sin_addr.S_un.S_addr = INADDR_BROADCAST; //::inet_addr("255.255.255.255");
printf("begin send the data:\r\n");
char sz[] = "this is the broadcast data";
while(TRUE)
{
::sendto(s, sz, sizeof(sz), 0, (sockaddr*)&bcast, sizeof(bcast));
::Sleep(5000);
}
}
客户端代码:
复制代码 代码如下:#include "InitSock.h"
#include <stdio.h>
void main()
{
CInitSock initSock;
SOCKET s = ::socket(AF_INET, SOCK_DGRAM, 0);
SOCKADDR_IN sin;
sin.sin_family = AF_INET;
sin.sin_port = ::htons(4567);
sin.sin_addr.S_un.S_addr = INADDR_ANY;
if (::bind(s, (sockaddr*)&sin, sizeof(sin)) == SOCKET_ERROR)
{
printf("bind error");
return;
}
printf("begin recv the broadcast data:\r\n");
char sz[256] = {0};
SOCKADDR_IN addrRemote;
int nLen = sizeof(SOCKADDR_IN); //这里必须设置成这个大小
while (TRUE)
{
int nRet = ::recvfrom(s, sz, sizeof(sz), 0, (sockaddr*)&addrRemote, &nLen);
if (nRet > 0)
{
sz[nRet] = '\0';
printf(sz);
}
}
}
希望本文所述对大家的C++程序设计有所帮助。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
java单播、广播、组播详解及实例代码在当前网络通信中(TCP/IP也不例外)有三种通信模式:单播、广播、组播(又叫多播,个人感觉叫多播描述的有点不恰当),其中
本文实例讲述了C++获得文件状态信息的方法。分享给大家供大家参考。具体如下://C++获得文件状态信息源码,//C++获得文件所在磁盘盘符源码,//C++文件创
本文详细叙述了C/C++的位操作,这是C/C++程序设计中非常重要的概念。本文实例对于C/C++初学者来说也具有很好的复习与参考价值。具体分析如下:C/C++对
C++中构造函数的实例详解c++构造函数的知识在各种c++教材上已有介绍,不过初学者往往不太注意观察和总结其中各种构造函数的特点和用法,故在此我根据自己的c++
本文实例讲述了C++使用CriticalSection实现线程同步的方法,在前文C++线程同步实例分析的基础上增加了四行代码,使用了四个函数:EnterCrit