不能发送广播包的电脑和可以发送广播报的主机对比,发现不能发送广播报的主机上都有安装虚拟机,也有虚拟网卡,将所有的虚拟网卡关闭,然后再进行测试,都正常了,无论是Win7,Win10还是Xp。

禁用VMware这两个虚拟网卡,然后就一切正常了。

udp广播服务器程序:

// BoardCast_Server.cpp : 定义控制台应用程序的入口点。
// #include "stdafx.h" #include <WinSock2.h>
#include <Windows.h>
#pragma comment(lib, "WS2_32.lib") int _tmain(int argc, _TCHAR* argv[])
{
//启动socket api
WORD wVersionRequested = MAKEWORD(2, 2);
WSADATA wsaData;
if( 0 != WSAStartup(wVersionRequested, &wsaData))
{
printf("WSAStartup failed with error: %d\n", GetLastError());
return EXIT_FAILURE;
}
if( 2 != HIBYTE(wsaData.wVersion) || 2 != LOBYTE(wsaData.wVersion))
{
printf("Socket version not supported.\n");
WSACleanup();
return EXIT_FAILURE;
}
SOCKET sockfd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
if( INVALID_SOCKET == sockfd)
{
printf("socket failed with error: %d\n", WSAGetLastError());
WSACleanup();
return EXIT_FAILURE;
}
SOCKADDR_IN addr;
memset(&addr, 0, sizeof(addr));
addr.sin_addr.S_un.S_addr = INADDR_BROADCAST;
addr.sin_family = AF_INET;
addr.sin_port = htons(7777);
BOOL bBoardcast = TRUE;
if( SOCKET_ERROR == setsockopt(sockfd, SOL_SOCKET, SO_BROADCAST, (const char*)&bBoardcast, sizeof(bBoardcast)))
{
printf("setsockopt failed with error: %d\n", WSAGetLastError());
if( INVALID_SOCKET != sockfd)
{
closesocket(sockfd);
sockfd = INVALID_SOCKET;
}
WSACleanup();
return EXIT_FAILURE;
}
printf("Server start to boardcast...\n");
char buf[] = "This message from DESKTOP-879IMIS!";
while(1)
{
if( SOCKET_ERROR == sendto(sockfd, buf, sizeof(buf), 0, (LPSOCKADDR)&addr, sizeof(addr)))
{
printf("sendto failed with error:%d\n", WSAGetLastError());
Sleep(1000);
continue;
}
Sleep(1000);
}
WSACleanup(); return 0;
}

  

udp广播客户端程序:

// BoardCast_Client.cpp : 定义控制台应用程序的入口点。
// #include "stdafx.h" #include <WinSock2.h>
#include <Windows.h>
#pragma comment(lib, "WS2_32.lib")
#define MAX_BUFFER 256 int _tmain(int argc, _TCHAR* argv[])
{
WORD wVersionRequested = MAKEWORD(2, 2);
WSADATA wsaData;
if(0 != WSAStartup(wVersionRequested, &wsaData))
{
printf("WSAStartup failed with error: %d/n", GetLastError());
return EXIT_FAILURE;
}
if(2 != HIBYTE(wsaData.wVersion) || 2 != LOBYTE(wsaData.wVersion))
{
printf("Socket version not supported./n");
WSACleanup();
return EXIT_FAILURE;
}
SOCKET sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
if(INVALID_SOCKET == sock)
{
printf("socket failed with error: %d/n", WSAGetLastError());
WSACleanup();
return EXIT_FAILURE;
}
SOCKADDR_IN addr;
memset(&addr, 0, sizeof(addr));
addr.sin_family = AF_INET;
addr.sin_addr.S_un.S_addr = INADDR_ANY;
addr.sin_port = htons(7777);
if(SOCKET_ERROR == bind(sock, (LPSOCKADDR)&addr, sizeof(addr)))
{
printf("bind failed with error: %d/n", WSAGetLastError());
if(INVALID_SOCKET != sock)
{
closesocket(sock);
sock = INVALID_SOCKET;
}
WSACleanup();
return EXIT_FAILURE;
} char szBuf[MAX_BUFFER] = {0};
SOCKADDR_IN remote;
memset(&remote, 0, sizeof(remote));
int len = sizeof(remote);
while(1)
{
if(SOCKET_ERROR == recvfrom(sock, szBuf, MAX_BUFFER-1, 0, (LPSOCKADDR)&remote, &len))
{
printf("recvfrom failed with error: %d/n", WSAGetLastError());
continue;
}
printf("recv data: <%s : %d> %s\n", inet_ntoa(remote.sin_addr), ntohs(remote.sin_port), szBuf);
}
return 0;
}

  

windows upd广播包无法发送到局域网解决方法的更多相关文章

  1. Windows与Linux/Mac系统时间不一致的解决方法

    Windows与Linux/Mac系统时间不一致的解决方法 分类: linux2012-02-12 14:25 1691人阅读 评论(1) 收藏 举报 windowsubuntusystemlinux ...

  2. Windows 系统提示“内存不足”的原因及解决方法

         Windows 系统提示“内存不足”的原因及解决方法 windows XP vista 及windows 7系统的电脑有时候会出现系统提示“内存不足”,这是由多方面原因造成的.本文具体分析下 ...

  3. windows 10 删除库后自动恢复的解决方法

    目录 什么是windows 库? 手动删除不行吗? 如何正确的"删除"? title: windows 10 删除库后自动恢复的解决方法 date: 2019-06-09 15:4 ...

  4. Windows中Nginx配置nginx.conf不生效解决方法(路径映射)

    Windows中Nginx配置nginx.conf不生效解决方法 今天在做Nginx项目的时候,要处理一个路径映射问题, location /evaluate/ { proxy_pass http:/ ...

  5. UDP丢包和无序 问题的解决方法

    最近在做一个项目,在这之前,做了个验证程序. 发现客户端连续发来1000个1024字节的包,服务器端出现了丢包现象. 纠其原因,是服务端在还未完全处理掉数据,客户端已经数据发送完毕且关闭了. 我用过s ...

  6. URL传递中文参数,大坑一枚,Windows与Linux效果竟然不一致(两种解决方法)

    下午,计划2个小时搞定,个人官网第6次升级,就可以干点轻松的事了,结果,下午多搞了2个小时,晚上又搞了2个小时,才搞定. 最后一个世界难题是,URL传递中文参数. 问题大致是这么出现的:我为" ...

  7. charles抓包工具的中文乱码解决方法

    charles是 MAC上最好用的抓包工具.charles 网上的参考文档已经很多,我就不再赘述啦.只是说说我在安装过程遇到的问题和解决方法,仅供参考. charles抓包的数据中的中文内容显示乱码, ...

  8. windows下sqlplus / as sysdba报ora-12560的解决方法

    环境:win7_64位.数据库版本ORACLE11G_R2 在CMD窗口,使用下面三个命令可正常连接数据库:C:\Users\Administrator> sqplus /nolog C:\Us ...

  9. Windows Server 2008 R2提示api-ms-win-crt-runtime-l1-1-0.dll 丢失解决方法

    在一台服务器的全新windows Server 2008 R2 服务器上配置php运行环境, 在启动Apache之后,显示下图错误: 解决方法: 1.安装VC redit.exe程序解决 是VC的一个 ...

随机推荐

  1. Function——记忆化搜索

    题目描述 对于一个递归函数w(a,b,c) 如果a<=0 or b<=0 or c<=0就返回值1. 如果a>20 or b>20 or c>20就返回w(20,2 ...

  2. Android的数据存储方式概述

    数据存储在开发中是使用最频繁的,在这里主要介绍Android平台中实现数据存储的5种方式,分别是: 1 使用SharedPreferences存储数据 2 文件存储数据 3 SQLite数据库存储数据 ...

  3. jqgrid postData setGridParam 调用多次时查询条件累加的问题--详情页查询导致的无法在新的页面中查询

    $("#btn_search").click(function () { url = "/AMEvents/GetGridJson?evtype=1"; var ...

  4. linux 之创建文件命令

    1.vi vi 1.txt 会直接创建并打开一个文件1.txt 2.touch touch的作用是更改一个文件或目录的时间.touch 2.txt 如果2.txt不存在,则创建空文件2.txt 3.e ...

  5. Springboot集成BeanValidation扩展二:加载jar中的资源文件

    一.需求 今天在搭建Springboot框架的时候,又遇到一个需求:在多模块系统中,有些模块想自己管理BeanValidation的资源文件(默认是启动项目claspath下的 ValidationM ...

  6. 安全小测试:介绍一个简单web安全知识测试的网站

    https://websecurity.firebaseapp.com/ 一次测试一共7道题,最后有答案,可以反复做,每次随机抽题

  7. DotNetBrowser入门教程(更新完善中)

    DotNetBrowser 希望实现的目标:桌面软件可以完美运行Html5,内置支持MVC与WebSocket的微型服务器. 基于.Net 4.0开发.开发环境:VS2017,运行环境支持Window ...

  8. log4j教程 3、架构

    Log4j API设计为分层结构,其中每一层提供了不同的对象,对象执行不同的任务.这使得设计灵活,根据将来需要来扩展. 有两种类型可用在Log4j的框架对象. 核心对象: 框架的强制对象和框架的使用. ...

  9. 小白学react之网页获取微信用户信息

    通过上一篇<小白学react之EJS模版实战>我们学习了怎样通过EJS模版生成我们高定制化的index.html文件. 本篇我们将会继续延续我们的alt-tutorial项目的实战计划.去 ...

  10. python字典里的update函数

    >>> print d {'age': 34, 'name': 'jeapedu'} >>> d1={"age":38} >>> ...