1、数据发送端

#include "stdafx.h"
#include <WinSock2.h>
#include <stdio.h>
#include <iostream>
using namespace std;#pragma comment(lib, "ws2_32.lib")   #define SENDPORT    22222
#define RECVPORT    11111
#define GET_HOST_COMMAND "GetInfor"int _tmain(int argc, _TCHAR* argv[])
{int sockfd;WSADATA wsdata;/*启动SOCKET库,版本为2.0*/WORD    wVer = MAKEWORD(2, 0);if (0 != WSAStartup(wVer, &wsdata)){printf("Not Support Socket2.0!");return -1;}/*socket创建*/if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0){printf("socket creater failed!");return  -1;}/*开启广播*/int on = 1;if (setsockopt(sockfd, SOL_SOCKET, SO_BROADCAST, (char*)&on, sizeof(on)) < 0){printf("setsockopt failed!");closesocket(sockfd);return -1;}/*接收地址设定*/struct sockaddr_in src_addr;memset(&src_addr, 0, sizeof(src_addr));src_addr.sin_family = AF_INET;src_addr.sin_port = htons(RECVPORT);src_addr.sin_addr.s_addr = htonl(INADDR_ANY);if (bind(sockfd, (struct sockaddr*)&src_addr, sizeof(src_addr)) < 0){printf("bind failed!");closesocket(sockfd);return -1;}/*发送数据到广播地址*/char sendbuffer[] = "UDP content send Test!";struct sockaddr_in dest_addr;memset(&dest_addr, 0, sizeof(dest_addr));dest_addr.sin_family = AF_INET;dest_addr.sin_port = htons(SENDPORT);dest_addr.sin_addr.s_addr = htonl(INADDR_BROADCAST);/*数据接收*/char Recvbuffer[128] = { 0 };struct sockaddr_in sendaddr;int len = sizeof(sendaddr);if (recvfrom(sockfd, Recvbuffer, sizeof(Recvbuffer), 0, (struct sockaddr*)&sendaddr, &len) < 0){printf("recvfrom failed!");closesocket(sockfd);return -1;}printf("接到数据:%s\n", Recvbuffer);if (strcmp(Recvbuffer, GET_HOST_COMMAND) == 0){/*把数据发往广播地址*/for (int i = 0; i < 5; i++){if (sendto(sockfd, sendbuffer, sizeof(sendbuffer), 0, (struct sockaddr*)&dest_addr, sizeof(dest_addr)) < 0){printf("sendto failed!");closesocket(sockfd);return -1;}printf("发送数据:%s\n", sendbuffer);}}closesocket(sockfd);system("pause");return 0;
}

2、遇到问题:

windows端本机电脑可以接收udp广播包,但是无法发送广播包,最后定位原因为虚拟机网卡导致广播包发送不出去!

UDP广播包发送与接收相关推荐

  1. Udp广播的发送和接收(iOS + AsyncUdpSocket)下篇

    接上篇C#的Udp广播的发送和接收 http://www.cnblogs.com/JimmyBright/p/4637090.html ios中使用AsyncUdpSocket处理Udp的消息非常方便 ...

  2. 解决go udp广播包无法接收

    1.虚拟机网卡导致广播包发送不出去或接收不到问题 2.防火墙开启限制udp包接收发送

  3. Linux内核网络协议栈:udp数据包发送(源码解读)

    <监视和调整Linux网络协议栈:接收数据> <监控和调整Linux网络协议栈的图解指南:接收数据> <Linux网络 - 数据包的接收过程> <Linux网 ...

  4. socket简介和udp网络程序-发送、接收数据

    socket简介 不同电脑上的进程之间如何通信 首要解决的问题是如何唯一标识一个进程,否则通信无从谈起! 在1台电脑上可以通过进程号(PID)来唯一标识一个进程,但是在网络中这是行不通的. 其实TCP ...

  5. 使用 UDP 数据包发送消息

    使用 UDP 数据包发送短的文本消息实现是很简单的并且提供可一个非常轻量级的消息传递通道.但是这种模式有很大的缺陷,就是不保证的数据的可靠性,有可能会存在丢包的情况,甚至严重的情况就是服务器不可用的时 ...

  6. 分析udp数据报_Linux内核网络udp数据包发送(二)——UDP协议层分析

    1. 前言 本文分享了Linux内核网络数据包发送在UDP协议层的处理,主要分析了udp_sendmsg和udp_send_skb函数,并分享了UDP层的数据统计和监控以及socket发送队列大小的调 ...

  7. Linux内核网络udp数据包发送(二)——UDP协议层分析

    1. 前言 本文分享了Linux内核网络数据包发送在UDP协议层的处理,主要分析了udp_sendmsg和udp_send_skb函数,并分享了UDP层的数据统计和监控以及socket发送队列大小的调 ...

  8. Linux内核网络UDP数据包发送(三)——IP协议层分析

    1. 前言 Linux内核网络 UDP 协议层通过调用 ip_send_skb 将 skb 交给 IP 协议层,本文通过分析内核 IP 协议层的关键函数来分享内核数据包发送在 IP 协议层的处理,并分 ...

  9. Android源码分析之广播的发送和接收流程

    说明:本文是基于Android6.0源码来分析的 概要 我的理解是,Android中的广播可以看为一种消息机制,用来在一定的条件下触发一些操纵,比如:网络状态的改变,熄屏,亮屏等等Android系统都 ...

最新文章

  1. zabbix 3.0 完全安装全解!
  2. 《Nmap渗透测试指南》—第6章6.4节IP欺骗
  3. c语言测试代码怎么写,初学C语言,写了一个测试手速的工具,代码发上来,存着。。...
  4. 后台传Map到ftl
  5. IIS的安装和配置全过程
  6. 软件测试白皮书-等价类
  7. 开始时间小于 结束时间 js_DNF分享红包开始及结束时间 红包有什么奖励相关介绍...
  8. python多重赋值技巧_python教程12课:多元赋值、多重赋值、运算符以及判断字符串类型...
  9. js (jQuery) 之 取值
  10. 计算机组成原理实验存储器部件实验,计算机组成原理实验_存储器部件教学实验...
  11. java 按拼音模糊搜索汉字_数据查询支持中文拼音首字母模糊检索
  12. ClassFinal是一款java class文件安全加密工具
  13. Unexpandable Clocks不可扩展时钟 UG903
  14. 快速将正式环境的数据同步到本地测试库
  15. SAT OG 写作辅导:良知是一种比金钱名望和权力更有力的激励?
  16. charles抓包提示unknow
  17. 如何创建一个更专业的企业邮箱
  18. 《惢客创业日记》2021.04.13 -23(周二)惢客月老演示词
  19. 初览spring boot读后感
  20. python遍历循环怎么理解_聊聊python中的循环遍历

热门文章

  1. SAP查询供应商主数据
  2. 2020_9_25_数字和列表
  3. 于丹感悟人生之经典名言
  4. Ubuntu安装OMNet++与nesting进行仿真
  5. 制作html5移动端页面,移动端H5页面制作规范
  6. net::ERR_NAME_NOT_RESOLVED出现无法解决
  7. 硬盘播出系统_系统升级荣威RX5 PLUS Ali贺岁精选版上市
  8. Python爬虫入门案例:获取百词斩已学单词列表
  9. 【报告分享】 2020百度美妆行业研究(国货篇)百度营销中心 (附下载)
  10. android下拉菜单——选择星座