• 客户端

     #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. android学习笔记五。2、其他组件

    一.ContentProvider内容提供者.是是android中一个应用向第三方共享数据的方式,android中的联系人,sms(短信记录)等都是通过这一方式来向外提供的 1.使用: 在应用中使用C ...

  2. Python(四) 分支、循环、条件与枚举

    一.什么是表达式 表达式(Expression)是运算符(operator)和操作数(operand)所构成的序列 二.表达式的优先级 三.表达式优先级练习 优先级同级 从左往右计算 1 or 2 a ...

  3. 打包,VS 之 InstallShield Limited Edition for Visual Studio 2015 图文教程

    转载收藏于 https://www.cnblogs.com/xinaixia/p/5473815.html 从Visual Studio 2012开始,微软就把自家原来的安装与部署工具彻底废掉了,转而 ...

  4. 解析position定位

    关于position定位(所有主流浏览器都支持 position 属性),大家会联想到relative和absolute,下面我就讲一下relative和absolute分别是相对于谁进行定位的? 在 ...

  5. Swift学习笔记(13)--属性 (Properties)

    普通属性用var和let即可,本文不做详述 1.延迟存储属性 延迟存储属性是指当第一次被调用的时候才会计算其初始值的属性.在属性声明前使用@lazy来标示一个延迟存储属性. class DataImp ...

  6. ArcGIS Engine中添加点、线、面元素

    转自原文 ArcGIS Engine中添加点.线.面元素 此种方式为IElement的方式在axMapControl的GraphicsContainer中好绘制图形. //画点 IPoint pt = ...

  7. CentOs虚拟机能够互相ping通,但无法訪问虚拟机服务

    CentOs虚拟机能够互相ping通,但无法訪问虚拟机服务 虚拟机ip:192.168.0.57 主机 ip:192.168.0.80 在虚拟机上搭建了php环境.虚拟机CentOs,主机win7 虚 ...

  8. R中读取文件,找不到路径问题 No such file or directory

      R中读取文件,找不到路径问题 No such file or directory 近日,读取文件时.出现例如以下问题 > passenger = read.csv('internationa ...

  9. UDP连接调用connect()函数

    UDP是一个无连接的协议,它没有像TCP中EOF之类的东西. 8.11 UDP的connect函数 除非套接字已连接,否则异步错误是不会反悔到UDP套接字的. 我们确实能够给UDP套接字调用conne ...

  10. es68对象的解构赋值

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...