本文实例讲述了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++程序设计有所帮助。
我正在编写一个UDP客户端/服务器应用程序。服务器是广播服务器,它通过特定端口向同一子网上的两个客户端广播。每个客户端接收一个数据报,并向服务器发送一个响应。每个客户端都预先知道服务器的ip地址。 我的客户端基本上与http://man7.org/linux/man-pages/man3/getaddrinfo.3.html,的客户端示例相同,即它使用connect()函数来指定所有传出数据包的e
问题内容: 我正在研究通过多个Android设备之间的Wi-Fi Direct连接进行广播的可能性。我创建了一个简单的消息广播应用程序来测试它是否有效,但是到目前为止,我还无法广播消息。当我尝试发送数据包时,出现 SocketException (网络无法访问): 这是我的代码的本质: 有谁知道在 Android 设备上通过Wi-Fi Direct广播是否真的有效?如果它可以正常工作,我在做什么错
本章介绍 UDP 介绍 ChannelHandler, Decoder, 和 Encoder 引导基于 Netty 的应用 前面的章节都是在示例中使用 TCP 协议,这一章,我们将使用UDP。UDP是一种无连接协议,若需要很高的性能和对数据的完成性没有严格要求,那使用 UDP 是一个很好的方法。最著名的基于UDP协议的是用来域名解析的DNS。这一章将给你一个好的理解的无连接协议所以你能够做出明智的
本文向大家介绍Android中的广播和广播接收器代码实例,包括了Android中的广播和广播接收器代码实例的使用技巧和注意事项,需要的朋友参考一下 BroadcastReceiver不仅可以接收系统广播,也可接收自定义的广播 1.定义一个广播接收器 2.发送广播,定义好action标志,用Intent发送 3.注册只接收指定action的广播接收器 4.取消该广播接收器
问题内容: 谁能告诉我如何实现一个独立的Java客户端来播放FM广播。我在网上搜索找不到有用的东西。我们需要实现的所有API是什么,一旦实现结束,如何对其进行测试? 问题答案: 您可以使用Webservices API访问许多广播网站 我正在在线发布最受欢迎的radio api的链接。 http://www.last.fm/api/radio 使用Java Web Services,您可以轻松地与
输出如下: 如果两个数组的维数不相同,则元素到元素的操作是不可能的。 然而,在 NumPy 中仍然可以对形状不相似的数组进行操作,因为它拥有广播功能。 较小的数组会广播到较大数组的大小,以便使它们的形状可兼容。 如果满足以下规则,可以进行广播: 如果输入在每个维度中的大小与输出大小匹配,或其值正好为 1,则在计算中可它。 如果上述规则产生有效结果,并且满足以下条件之一,那么数组被称为可广播的。 数