• 客户端

     #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. Gym - 100625J Jailbreak 最短路+搜索

    http://codeforces.com/gym/100625/attachments/download/3213/2013-benelux-algorithm-programming-contes ...

  2. HDU 1005 Number Sequence(矩阵)

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission( ...

  3. ORA-01659: 无法分配超出 7 的 MINEXTENTS

    plsql连接出错:ORA-01659: 无法分配超出 7 的 MINEXTENTS (在表空间 PERFSTAT 中) 从 Oracle Database 10g Enterprise Editio ...

  4. 二分法查找 js 算法

    二分法查找算法:采用二分法查找时,数据需是排好序的.主要思想是:(设查找的数组区间为array[s, e])(1)确定该区间的中间位置m(2)将查找的值T与array[m]比较,若相等,查找成功返回此 ...

  5. c#记录日志的方法

    /// <summary> /// 生成日志 /// </summary> /// <param name="text"></param& ...

  6. jq PC做滚动效果经常用到的各类参数【可视区判断】

    获取 浏览器显示区域 (可视区域)的高度 :  $(window).height();  获取浏览器显示区域(可视区域)的宽度 :  $(window).width();  获取页面的文档高度: $( ...

  7. 【搭建Saltstack运维工具】

    目录 所谓Salt 开始搭建 配置接受密钥 salt命令 YAML详解 目标定位字符串 state模块定义主机状态 Salt采集静态信息之GrainsSalt @(Saltstack) *** 所谓S ...

  8. 紫书 例题 9-11 UVa 1331 (最优三角形剖分)

    设置f(i, j)为点i, i + 1 --j所组成的多边形. 那么可以枚举中间点k, 得f(i, j) = min{s(i, j, k), f(i, k), f(k, j) | i < k & ...

  9. 设置eclipse中的字体大小

  10. C++ 递归位置排列算法及其应用

    废话不多说,我们先看一下位置排序的算法: #include <iostream> using namespace std; int n = 0; int m = 2; int l = 0; ...