• 客户端

     #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. netflix zuul 1.x与zuul2.x之比较

    1.zuul 1.x的架构如下所示: 线程模型: 其web应用的web.xml <?xml version="1.0" encoding="UTF-8"? ...

  2. LINQ的基本语法包含如下的8个上下文关键字,这些关键字和具体的说明如下

    出于工作需要,准备把LINQ的相关知识梳理一遍,希望能填补下之前学习漏掉的或是没有注意的地方,也为未来减轻压力~ LINQ查询表达式的基本语法很容易掌握,它使用C#常见的语言构造,从外观上看,和我们常 ...

  3. vue的在子组件在使用iview库发现的问题

    正常调用没有问题 当写到子组件的时候 这样调用就出问题了 以下是写到子组件出的问题 解决方法  改成了两行写就不会报错了

  4. 安装SQL2008后需要打开的端口为 1433,4630

  5. AngularJS实现cookie跨域

    前后端分离被越来越多的公司重视利用.然后带来的最棘手的问题就是.用户信息应怎样保存. 一.场景描写叙述 以Java为后台,AngluarJS做前端为例进行描写叙述:当用户在界面登录时.需把用户信息(如 ...

  6. 稀疏表示字典的显示(MATLAB实现代码)

    本文主要是实现论文--基于稀疏表示的图像超分辨率<Image Super-Resolution Via Sparse Representation>中的Figure2.通过对100000个 ...

  7. iOS Core Animation具体解释(四)AutoLayout中的动画

    原创blog.转载请注明出处 blog.csdn.net/hello_hwc 欢迎关注我的iOS SDK具体解释专栏 http://blog.csdn.net/column/details/huang ...

  8. .Net 自动属性结合手动属性

    Model using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace ...

  9. BZOJ 1572 贪心(priority_queue)

    思路: 维护两个堆 一个按时间 (从后到前)的 另一个是按价值(从大到小)的 从时间的堆向价值的堆倒 每回(合法状态下)取当前的堆顶 判一判 //By SiriusRen #include <q ...

  10. Postman APP

    http://chromecj.com/web-development/2017-12/870.html    Postman 工具模拟http各种协议请求.