问题描述
之前写了一个客户端和服务器组播的程序,一直运行没有任何问题。有天忽然换了下网线,然后本人重装了下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通?