c#局域网组播的诡异问题,求教了

问题描述

之前写了一个客户端和服务器组播的程序,一直运行没有任何问题。有天忽然换了下网线,然后本人重装了下win8系统,进行程序更新后(只是更新了业务逻辑,并未对组播相关代码变动),忽然发现组播不可用了。目前,处于局域网的电脑,都接受不到组播消息。debug测试,发现客户端udpclient的端口也正确。代码如下:服务端IPEndPointGroup=newIPEndPoint(IPAddress.Parse("224.0.1.108"),11188);for(inti=0;i<100;i++){ASSendGroup("test",tsGroup);}voidASSendGroup(stringstr,IPEndPointGroupEp){Byte[]sendBytes=Encoding.UTF8.GetBytes(str);ConnServer.BeginSend(sendBytes,sendBytes.Length,GroupEp,null,null);}

客户端udpClient=newUdpClient(11188);Taskt_udp=newTask(ReceiveMsg);t_udp.Start();privatevoidReceiveMsg(){udpClient.JoinMulticastGroup(IPAddress.Parse("224.0.1.108"),10);udpClient.EnableBroadcast=true;}IPEndPointremoteHost=null;while(true){Byte[]receiveBytes=udpClient.Receive(refremoteHost);strings=Encoding.UTF8.GetString(receiveBytes);print(s);//在本机上可以接受到,但别的处于统一局域网都无法接收到数据}

不过我认为应该不是代码问题吧?是否路由器和交换机需要一些设置?我这里的网络是一个路由器下连了一个交换机。谢谢!!

解决方案

解决方案二:
估计是WIN8的问题,XP上同样的组播功能,在WIN8上无效
解决方案三:
引用1楼chenandczh的回复:

估计是WIN8的问题,XP上同样的组播功能,在WIN8上无效

为什么,组播不是用的socket么,跟操作系统有什么关系...是否WIN8防火墙禁用了组播?
解决方案四:
WIN7,WIN8,SERVER系统的防火墙默认:非常用端口(如8080等),全部禁用你想用某个端口开UDP组播,需要加入白名单
解决方案五:
引用3楼Z65443344的回复:

WIN7,WIN8,SERVER系统的防火墙默认:非常用端口(如8080等),全部禁用你想用某个端口开UDP组播,需要加入白名单

ms自己的wp版本mstsc都无法访问w8的远程连接,除非关闭w8的防火墙。不用考虑是w8的什么问题,老老实实换回w7
解决方案六:
引用3楼Z65443344的回复:

WIN7,WIN8,SERVER系统的防火墙默认:非常用端口(如8080等),全部禁用你想用某个端口开UDP组播,需要加入白名单

防火墙全部关闭了,很奇怪的是就是没有发送出去,XP下就不一样...
解决方案七:
引用4楼xomix的回复:

ms自己的wp版本mstsc都无法访问w8的远程连接,除非关闭w8的防火墙。不用考虑是w8的什么问题,老老实实换回w7

真逗,如果启用防火墙,就赖上操作系统行吗?
解决方案八:
引用5楼chenandczh的回复:

Quote: 引用3楼Z65443344的回复:
WIN7,WIN8,SERVER系统的防火墙默认:非常用端口(如8080等),全部禁用你想用某个端口开UDP组播,需要加入白名单

防火墙全部关闭了,很奇怪的是就是没有发送出去,XP下就不一样...

防火墙有出站规则,有入站规则。也就是说,发送方需要加入白名单,接收方也要加入白名单。如果局域网中用了路由器,也要看下路由器设置。
解决方案九:
引用7楼Z65443344的回复:

Quote: 引用5楼chenandczh的回复:
Quote: 引用3楼Z65443344的回复:
WIN7,WIN8,SERVER系统的防火墙默认:非常用端口(如8080等),全部禁用你想用某个端口开UDP组播,需要加入白名单

防火墙全部关闭了,很奇怪的是就是没有发送出去,XP下就不一样...

防火墙有出站规则,有入站规则。也就是说,发送方需要加入白名单,接收方也要加入白名单。如果局域网中用了路由器,也要看下路由器设置。

XP是跑在WIN8下的虚拟机...
解决方案十:
引用8楼chenandczh的回复:

Quote: 引用7楼Z65443344的回复:
Quote: 引用5楼chenandczh的回复:
Quote: 引用3楼Z65443344的回复:
WIN7,WIN8,SERVER系统的防火墙默认:非常用端口(如8080等),全部禁用你想用某个端口开UDP组播,需要加入白名单

防火墙全部关闭了,很奇怪的是就是没有发送出去,XP下就不一样...

防火墙有出站规则,有入站规则。也就是说,发送方需要加入白名单,接收方也要加入白名单。如果局域网中用了路由器,也要看下路由器设置。

XP是跑在WIN8下的虚拟机...

关闭WIN8防火墙也不行么?虚拟机直接PING能PING通?

时间: 2024-10-31 02:03:22

c#局域网组播的诡异问题,求教了的相关文章

winform程序一发送组播,高于1秒或以上的频率时,局域网会崩溃

问题描述 最近在做组播功能,对局域网的客户端发送服务端桌面.现在在我自己家测试,就出现一诡异问题,发送组播时,如果频率为1秒,那局域网过几秒就会崩溃,电脑全部断网.我拿到朋友测试又没问题,同样都是家庭用的tp_link,没啥特别,只是型号不一样,谁知道指教下,这问题困扰很久了.太久没来,可用分竟然只有20........没办法了,本来想放40的 解决方案 本帖最后由 wtnu200 于 2016-04-24 12:26:15 编辑解决方案二:是不是和网卡配置有关系解决方案三:把你当成Dos攻击了

4高并发服务器:UDP局域网服务器(组播)

 1 UDP局域网服务器 A读出每一个客户端发送过来的数据包,然后fork出子进程,由子进程去处理客户端请求. B客户端与服务器段交换多个数据报,服务器为每一个客户端连接创建新的socket,在其上bind一个临时端口,然后用该socket处理对应客户端上的所有应答,这个办法要求在客户查看服务器第一个应答中的源端口号.然后后面利用此端口号和服务器进行交互. 2函数声明 int bind(int sockfd, const struct sockaddr*addr,socklen_t addr

组播的DR的工作原理与故障排查思路详解

1, 问题描述: 我们一台CPE MP1803路由器作为客户的CE路由器,PC发了IGMP report以后,我们路由器会在IGMP表项里写上该组播组,但是客户那里说上游的Huawei PE设备没有收到我们设备的PIM JOIN报文而最终不能将组播流量引下来. 经过排查,发现客户在同一个局域网中有多个CPE, 而且我们的MP1803不是DR. 所以这就是为什么客户开了debug以后不能在我们路由器的上游接口抓到PIM JOIN报文误认为是我们路由器的问题. 当时建议客户把局域网断开,然后直接用P

单播、多播(组播)和广播的区别

单播.多播和广播单播"(Unicast)."多播"(Multicast)和"广播"(Broadcast)这三个术语都是用来描述网络节点之间通讯方式的术语.那么这些术语究竟是什么意思?区别何在? 1.单播:网络节点之间的通信就好像是人们之间的对话一样.如果一个人对另外一个人说话,那么用网络技术的术语来描述就是"单播",此时信息的接收和传递只在两个节点之间进行.单播在网络中得到了广泛的应用,网络上绝大部分的数据都是以单播的形式传输的,只是一

openwrt怎么发送组播到wireless

问题描述 openwrt怎么发送组播到wireless openwrt上有个程序,从外部USB设备读取到数据,然后想发送组播到wifi网络,怎么做?现在都发送到wan口连接的局域网中了

【网络编程3】Java组播套接字

这篇博文是本文学习<Java网络程序设计>书中第5章中组播套接字的学习总结.所有源代码都在文章后面我的github链接代码中. --惠州学院13网络工程 吴成兵 20160612 目录 1 目录 1 一 组播套接字概述 二 MulticastSocket 21 MulticastSocket构造方法 22MulticastSocket常用方法 三 组播套接字编程 31 使用组播套接字发送数据的过程 32 使用组播套接字接收数据的过程 四 组播套接字编程示例 41 组播套接字发送和接收程序 41

多播、组播、广播优缺点分析

单播.多播和广播单播"(Unicast)."多播"(Multicast)和"广播"(Broadcast)这三个术语都是用来描述网络节点之间通讯方式的术语.那么这些术语究竟是什么意思?区别何在? 1.单播:网络节点之间的通信就好像是人们之间的对话一样.如果一个人对另外一个人说话,那么用网络技术的术语来描述就是"单播",此时信息的接收和传递只在两个节点之间进行.单播在网络中得到了广泛的应用,网络上绝大部分的数据都是以单播的形式传输的,只是一

网络-关于多级路由组播问题

问题描述 关于多级路由组播问题 请教问题,请高手不吝赐教 在一个局域网中有两个路由器Rouer-A和Router-B(假设都不支持组播功能),两个路由器下面分别有两台主机PC-A和PC-B,PC-A和PC-B是不是就不可能实现组播通信? 原始套接字可以解决这个网络环境的组播问题吗? 如果组播不行,我怎么能让它们在局域网中进行通信?

“单播”、“组播”和“多播”

摘自"百度知道",我不知道!   当前的网络中有三种通讯模式:单播.广播.组播(多播),其中的组播出现时间最晚但同时具备单播和广播的优点,最具有发展前景. 一.单播: 主机之间"一对一"的通讯模式,网络中的交换机和路由器对数据只进行转发不进行复制. 如果10个客户机需要相同的数据,则服务器需要逐一传送,重复10次相同的工作. 但由于其能够针对每个客户的及时响应,所以现在的网页浏览全部都是采用IP单播协议. 网络中的路由器和交换机根据其目标地址选择传输路径,将IP单播