看流星社区

 找回密码
 注册账号
查看: 1864|回复: 0

广播通信

[复制链接]

该用户从未签到

发表于 2017-6-2 11:07:57 | 显示全部楼层 |阅读模式
广播通信代码框架:
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*)&amp;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*)&amp;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*)&amp;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*)&amp;addrRemote, &amp;nLen);
                if (nRet > 0)
                {
                        sz[nRet] = '\0';
                        printf(sz);
                }

        }
}
点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 感恩
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

小黑屋|手机版|Archiver|看流星社区 |网站地图

GMT+8, 2024-3-19 11:27

Powered by Kanliuxing X3.4

© 2010-2019 kanliuxing.com

快速回复 返回顶部 返回列表