• 客户端

     #include <stdio.h>
    #include <string.h>
    #include <winsock.h>
    #pragma comment(lib,"ws2_32.lib") void main()
    {
    //存放版本
    WORD wversion;
    //指针,存放网络执行信息
    WSADATA wsadata;
    //管理错误,标号
    int err; //客户端套接字,用于连接
    SOCKET sockclient;
    //服务器地址
    SOCKADDR_IN addrserver;
    //客户端地址
    SOCKADDR_IN addrclienet; //长度
    int length = ;
    //接收
    char recvstr[] = { };
    //标示
    BOOL bflags=;
    //设定版本
    wversion = MAKEWORD(, );
    err = WSAStartup(wversion, &wsadata);
    if (err!=)
    {
    printf("获取版本失败");
    return;
    } if (LOBYTE(wsadata.wVersion)!= || HIBYTE(wsadata.wVersion)!=)
    {
    printf("版本对比失败,不一致");
    return;
    }
    //UDP报文传输
    sockclient = socket(AF_INET, SOCK_DGRAM, );
    //setsockopt()函数,用于任意类型、任意状态套接口的设置选项值。
    //尽管在不同协议层上存在选项,但本函数仅定义了最高的“套接口”层次上的选项。
    //多播必须指定的参数
    //flags设定,1代表广播,0禁止广播
    setsockopt(sockclient, SOL_SOCKET, SO_REUSEADDR, &bflags, sizeof(bflags)); //存放客户端ip地址
    addrclienet.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
    addrclienet.sin_family = AF_INET;
    addrclienet.sin_port = htons();//端口
    //客户端套接字与客户端信息绑定
    bind(sockclient, (SOCKADDR*)&addrclienet, sizeof(SOCKADDR));
    //等于地址长度
    length = sizeof(SOCKADDR);
    while ()
    {
    printf("wait-----------------\n");
    //从客户端接收消息,地址信息存放在addrserver中
    recvfrom(sockclient, recvstr, , , (SOCKADDR*)&addrserver, &length);
    if (WSAGetLastError()!=)
    {
    puts("收取失败");
    }
    //哪个服务器发送的
    printf("%s speak %s\n", inet_ntoa(addrserver.sin_addr), recvstr);
    }
    closesocket(sockclient);
    WSACleanup();
    system("pause");
    }
  • 服务器端
     #define  _CRT_SECURE_NO_WARNINGS
    #include <stdio.h>
    #include <string.h>
    #include <winsock.h>
    #pragma comment(lib,"ws2_32.lib") void main()
    {
    WORD wversion;//存放版本
    WSADATA wsadata;//指针,存放网络执行信息
    int err;//管理错误,标号 SOCKET socksever;//服务器套接字
    //记录服务器信息
    SOCKADDR_IN addrserver;
    //记录客户端信息
    SOCKADDR_IN addrclienet; int length = ;
    char sendstr[] = { };
    BOOL bflags = ;//标示
    wversion = MAKEWORD(, );//设定版本
    err = WSAStartup(wversion, &wsadata);
    if (err != )
    {
    printf("获取版本失败");
    return;
    } if (LOBYTE(wsadata.wVersion) != || HIBYTE(wsadata.wVersion) != )
    {
    printf("版本对比失败,不一致");
    return;
    } socksever = socket(AF_INET, SOCK_DGRAM, );//报文
    // SO_BROADCAST多播必须指定的参数
    //flags设定,1代表广播,0禁止广播
    setsockopt(socksever, SOL_SOCKET, SO_BROADCAST, &bflags, sizeof(bflags));//绑定 addrserver.sin_addr.S_un.S_addr = htonl(INADDR_ANY);//任意主机
    addrserver.sin_family = AF_INET;
    addrserver.sin_port = htons();//端口 //服务器信息与套接字绑定
    bind(socksever, (SOCKADDR*)&addrserver, sizeof(SOCKADDR));//绑定 //填写广播,255.255.255.255,广播
    addrclienet.sin_addr.S_un.S_addr = inet_addr("255.255.255.255");
    addrclienet.sin_family = AF_INET;
    addrclienet.sin_port = htons();//端口 length = sizeof(SOCKADDR);//保存地址长度 while ()
    {
    memset(sendstr, , );
    scanf("%s", sendstr);//获取读取
    //发送消息到客户端(广播)
    sendto(socksever, sendstr, strlen(sendstr), , (SOCKADDR*)&addrclienet, length);
    }
    closesocket(socksever);
    WSACleanup();
    system("pause");
    }

105.UDP通信实现广播的更多相关文章

  1. 高性能 TCP & UDP 通信框架 HP-Socket v3.3.1

    HP-Socket 是一套通用的高性能 TCP/UDP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP 通信系统,提供 C/C++.C#.Del ...

  2. HP-SOCKET TCP/UDP通信框架库解析

    项目概述: HP-SOCKET是一套通用TCP/UDP通信框架,包括服务器.客户端.Agent组件:其目标是提供高性能.通用性.简易性.可扩展.可定制: 鉴于此,其仅实现基本的通用框架通信.数据收发功 ...

  3. UDP 单播、广播和多播

    阅读目录(Content) 一.UDP广播 二.UDP多播 1.多播(组播)的概念 2.广域网的多播 三.UDP广播与单播 广播与单播的比较 使用UDP协议进行信息的传输之前不需要建议连接.换句话说就 ...

  4. QT之UDP通信

    前言:前一篇讲了TCP通信,这篇来看看UDP通信. 这里说明一下,UDP通信中分为三种通信分别为单播.组播和广播,下面将一一为大家介绍. 同样的我们都需要在工程文件中添加network QT += c ...

  5. java 网络编程之UDP通信和简单的群聊程序

    */ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...

  6. UDP收/发广播包原理及步骤

    原文链接地址:http://www.2cto.com/net/201311/254834.html UDP收/发广播包原理及步骤 如果网络中两个主机上的应用程序要相互通信,其一要知道彼此的IP,其二要 ...

  7. java基础 UDP通信 user datagram protocol 用户数据豆协议 TCP transmission control protocol 传输控制协议 多线程TCP

    无连接通信 UDP 客户端 package com.swift.test; import java.io.IOException; import java.net.DatagramPacket; im ...

  8. Python的网络编程[0] -> socket[2] -> 利用 socket 建立 TCP/UDP 通信

    Socket 目录 socket 的 TCP/IP 通信基本建立过程 socket 的 UDP 通信基本建立过程 socket 的 UDP 广播式通信基本建立过程 socket 的多线程通信建立过程 ...

  9. vector(可变数组) 用于UDP通信

    头文件: #include<vector.h> 然后,声明并初始化vctor数组. vector<char>  str(len); 其中len可以是变量或者常量.(其实用常量就 ...

随机推荐

  1. Linux远程远程控制程序TeamViewer

    TeamViewer 软件我就不介绍了,相信进行远程管理的人都知道它. 1.安装: Linux个发行版因软件管理方式不同而不同,先通过软件管理从自己的软件仓库进行搜索安装如果有就进行安装,没有通过官网 ...

  2. 如何在VMware中创建虚拟机

    今天给大家分享如何在VMware中创建虚拟机,具体的教程如下.在这里小编提前下载了Ubuntu14.04桌面系统,为后面在虚拟机中安装Ubuntu14.04桌面系统做准备. 1.从官网上或者直接百度上 ...

  3. OpenJDK源码研究笔记(十四):三种经典的设计方法,接口,接口-抽象类-具体实现类,接口-具体实现类

    在研究OpenJDK源码过程中,我发现常用的设计方法就是2种:接口,接口-抽象类-具体实现类 . 在一些其它开源框架和业务开发中,经常存在着第3种设计,接口-具体实现类. 1.只有接口,没有实现类. ...

  4. 【C/C++】链表的理解与使用

    转载自:http://blog.csdn.NET/xubin341719/article/details/7091583/ 最近不是太忙,整理些东西,工作也许用得到. 1,为什么要用到链表 数组作为存 ...

  5. 【Henu ACM Round#15 B】A and B and Compilation Errors

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 开3个map, 存在map里面: 然后迭代第一个和第二个map; 分别与第二个和第三个map比较就可以了 [代码] #include ...

  6. 【shell学习】经常使用条件推断-字符,数字,文件

    IF 推断 之前也写过简单的shell脚本,也不是转职运维.和系统相关的工作比較少.所以不怎么熟练. 近期因为系统总是出现各种乱七八糟的问题,也没有人来协助.仅仅好自己写shell脚本了,都是些基础的 ...

  7. 把文件保存到 sdcard

    直接上代码: package com.example.test; import java.io.File; import java.io.FileNotFoundException; import j ...

  8. c# for 和 foreach

    1给定长度 不需要计算长度的 for比foreach循环效率高 2 在不确定长度 或者计算长度有性能损耗的时候 用foreach比较方便 2336 循环语句是编程的基本语句,在C#中除了沿用C语言的循 ...

  9. 抓包神器Fiddler之Https请求随心转

    随着AppleStore对APP的审核越来越严格,客户端请求服务端API的方式大多数都变更为了https,在更安全的同时又引起了另外一个问题——本地抓包开发调试的不便. 一般来说,我们在开发API的时 ...

  10. 请妥善保管自己的QQ等网络帐号

    自从2008年以来,太多的同学.朋友,QQ等网络帐号被盗. 然后,盗号者来骗钱.比如 借用账号.帮忙支付费用等. 盗号者固然可恶,传统骗子的网络版. 可是,这些帐号的主人就仅仅是可怜么? 自己的号被盗 ...