• 客户端

     #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 studio 导入PullToRefresh

    1.新建一个Android项目,下载好Android-PullToRefresh-master,并解压,找到library文件夹,我把他放在C:\import目录下,下面的都是根据箭头一步一步的点击即 ...

  2. ping 原理及ICMP协议简介

    //Ping IP/域名 public static String pingIPCennect(String ipStr) {  String result = "";  if ( ...

  3. Felx之菜单导航

    Felx之菜单导航 环境搭建:MyEclipse 6.5+Flex Builder 3 Plug-in <?xml version="1.0" encoding=" ...

  4. nuxt 关闭ESlint 语法检测

    学习nuxt中在自己编写search组件的时候出现了各种类似于Expected indentation of 0 spaces but found 4的问题 上网搜是因为ESlint语法检测产生的问题 ...

  5. 今日SGU 5.13

    SGU 146 题意:就是给你一个长度为l的圈,然后你跑步,每一段给你时间t和速度v,问你最后离起点多远 收获:就是把浮点数转为整数,然后但是会出现精度误差,比如l最多四位小数,那你就加0.00001 ...

  6. Swift学习笔记(8)--函数

    1.定义及调用 func sayHelloAgain(personName: String) -> String { return "Hello again, " + per ...

  7. 【Uva 1625】Color Length

    [Link]: [Description] 给你两个序列,都由大写字母组成; 每次,把两个序列中的一个的开头字母加在字符串的尾端,然后在那个序列中删掉那个开头字母; 最后得到一个字符串; 这个字符串显 ...

  8. LeetCode Implement strStr()(Sunday算法)

    LeetCode解题之Implement strStr() 原题 实现字符串子串匹配函数strStr(). 假设字符串A是字符串B的子串.则返回A在B中首次出现的地址.否则返回-1. 注意点: - 空 ...

  9. ORA-06575: 程序包或函数 NO_VM_DROP_PROC 处于无效状态

    SQL> drop user aaa ;   drop user aaa   ORA-00604: 递归 SQL 级别 1 出现错误 ORA-06575: 程序包或函数 NO_VM_DROP_P ...

  10. 前台ajax验证技术采用正则表达式

    var flag1,flag2,flag3,flag4,flag5,flag6=false; function val(obj) { var regBox = { /* regEmail : /^([ ...