2.经过一个路由器是可以的。
14 个解决方案
#1
这里没有砖家?
#2
这里没有砖家,有攻城使。
#3
有个路由器不支持IGMP?你两个路由器换个位置看看
#4
好的,我试一下
#5
有攻城屎,好用也行
#6
一般情况下,UDP组播只在同一个网段内(即子网内),跨越网段组播要有交换机或路由器支持,路由器不支持就没办法了,通常专业交换机和路由器才具备这样的功能
#7
是同一个网段,只是其中一个路由器只能接四条线,所以就把其中的一条接出来连到另一个路由器上,再由另一个路由器分出几条线出来
#8
你确定你用的是路由器?而不是交换机或者hub?同一个网段用路由器?
#9
使用的是级联端口吗,级联端口好象也不行
#10
这个不会.
#11
是路由器,上面有中文写着的“路由器”,我又把程序试了一下,好像通了,能发过去了
#12
通了马上结贴,不过还没怎么搞清楚IGMP,ICMP之类的东西,等后面再不通了,我再开贴,大家等分哦!!!谢谢大家!!!!
#13
附上代码:
/// <summary>
/// 在后台运行的线程中接收数据的函数
/// </summary>
private void ReceiveData()
{
//在本机先指定端口接收
IPEndPoint iep = new IPEndPoint(IPAddress.Parse("192.168.1.46"), port);
udpClient = new UdpClient(iep);
//必须使用组播地址范围内的地址
udpClient.JoinMulticastGroup(IPAddress.Parse("224.0.0.1"));
udpClient.Ttl = 50;
IPEndPoint remote = null;
//接收从远程主机发送过来的信息
while (true)
{
try
{
//关闭udpClient时会产生异常
byte[] bytes = udpClient.Receive(ref remote);
string str = Encoding.UTF8.GetString(bytes, 0, bytes.Length);
AppendString(string.Format("来自{0}:{1}",remote,str));
}
catch
{
//退出循环,并结束线程
break;
}
}
}
private void sendData()
{
UdpClient myUdpClient = new UdpClient();
//允许发送和接收广播数据报
myUdpClient.EnableBroadcast = true;
//必须使用组播地址范围内的地址
IPEndPoint iep = new IPEndPoint(IPAddress.Parse("224.0.0.1"), port);
//将发送内容转换为字节数组
byte[] bytes = Encoding.UTF8.GetBytes(txtSend.Text);
try
{
//向子网发送消息
myUdpClient.Send(bytes, bytes.Length, iep);
}
catch (SocketException e)
{
MessageBox.Show("Error:" + e.ToString());
}
finally
{
myUdpClient.Close();
}
}
/// <summary>
/// 在后台运行的线程中接收数据的函数
/// </summary>
private void ReceiveData()
{
//在本机先指定端口接收
IPEndPoint iep = new IPEndPoint(IPAddress.Parse("192.168.1.46"), port);
udpClient = new UdpClient(iep);
//必须使用组播地址范围内的地址
udpClient.JoinMulticastGroup(IPAddress.Parse("224.0.0.1"));
udpClient.Ttl = 50;
IPEndPoint remote = null;
//接收从远程主机发送过来的信息
while (true)
{
try
{
//关闭udpClient时会产生异常
byte[] bytes = udpClient.Receive(ref remote);
string str = Encoding.UTF8.GetString(bytes, 0, bytes.Length);
AppendString(string.Format("来自{0}:{1}",remote,str));
}
catch
{
//退出循环,并结束线程
break;
}
}
}
private void sendData()
{
UdpClient myUdpClient = new UdpClient();
//允许发送和接收广播数据报
myUdpClient.EnableBroadcast = true;
//必须使用组播地址范围内的地址
IPEndPoint iep = new IPEndPoint(IPAddress.Parse("224.0.0.1"), port);
//将发送内容转换为字节数组
byte[] bytes = Encoding.UTF8.GetBytes(txtSend.Text);
try
{
//向子网发送消息
myUdpClient.Send(bytes, bytes.Length, iep);
}
catch (SocketException e)
{
MessageBox.Show("Error:" + e.ToString());
}
finally
{
myUdpClient.Close();
}
}
#14
路过..帮顶。
#1
这里没有砖家?
#2
这里没有砖家,有攻城使。
#3
有个路由器不支持IGMP?你两个路由器换个位置看看
#4
好的,我试一下
#5
有攻城屎,好用也行
#6
一般情况下,UDP组播只在同一个网段内(即子网内),跨越网段组播要有交换机或路由器支持,路由器不支持就没办法了,通常专业交换机和路由器才具备这样的功能
#7
是同一个网段,只是其中一个路由器只能接四条线,所以就把其中的一条接出来连到另一个路由器上,再由另一个路由器分出几条线出来
#8
你确定你用的是路由器?而不是交换机或者hub?同一个网段用路由器?
#9
使用的是级联端口吗,级联端口好象也不行
#10
这个不会.
#11
是路由器,上面有中文写着的“路由器”,我又把程序试了一下,好像通了,能发过去了
#12
通了马上结贴,不过还没怎么搞清楚IGMP,ICMP之类的东西,等后面再不通了,我再开贴,大家等分哦!!!谢谢大家!!!!
#13
附上代码:
/// <summary>
/// 在后台运行的线程中接收数据的函数
/// </summary>
private void ReceiveData()
{
//在本机先指定端口接收
IPEndPoint iep = new IPEndPoint(IPAddress.Parse("192.168.1.46"), port);
udpClient = new UdpClient(iep);
//必须使用组播地址范围内的地址
udpClient.JoinMulticastGroup(IPAddress.Parse("224.0.0.1"));
udpClient.Ttl = 50;
IPEndPoint remote = null;
//接收从远程主机发送过来的信息
while (true)
{
try
{
//关闭udpClient时会产生异常
byte[] bytes = udpClient.Receive(ref remote);
string str = Encoding.UTF8.GetString(bytes, 0, bytes.Length);
AppendString(string.Format("来自{0}:{1}",remote,str));
}
catch
{
//退出循环,并结束线程
break;
}
}
}
private void sendData()
{
UdpClient myUdpClient = new UdpClient();
//允许发送和接收广播数据报
myUdpClient.EnableBroadcast = true;
//必须使用组播地址范围内的地址
IPEndPoint iep = new IPEndPoint(IPAddress.Parse("224.0.0.1"), port);
//将发送内容转换为字节数组
byte[] bytes = Encoding.UTF8.GetBytes(txtSend.Text);
try
{
//向子网发送消息
myUdpClient.Send(bytes, bytes.Length, iep);
}
catch (SocketException e)
{
MessageBox.Show("Error:" + e.ToString());
}
finally
{
myUdpClient.Close();
}
}
/// <summary>
/// 在后台运行的线程中接收数据的函数
/// </summary>
private void ReceiveData()
{
//在本机先指定端口接收
IPEndPoint iep = new IPEndPoint(IPAddress.Parse("192.168.1.46"), port);
udpClient = new UdpClient(iep);
//必须使用组播地址范围内的地址
udpClient.JoinMulticastGroup(IPAddress.Parse("224.0.0.1"));
udpClient.Ttl = 50;
IPEndPoint remote = null;
//接收从远程主机发送过来的信息
while (true)
{
try
{
//关闭udpClient时会产生异常
byte[] bytes = udpClient.Receive(ref remote);
string str = Encoding.UTF8.GetString(bytes, 0, bytes.Length);
AppendString(string.Format("来自{0}:{1}",remote,str));
}
catch
{
//退出循环,并结束线程
break;
}
}
}
private void sendData()
{
UdpClient myUdpClient = new UdpClient();
//允许发送和接收广播数据报
myUdpClient.EnableBroadcast = true;
//必须使用组播地址范围内的地址
IPEndPoint iep = new IPEndPoint(IPAddress.Parse("224.0.0.1"), port);
//将发送内容转换为字节数组
byte[] bytes = Encoding.UTF8.GetBytes(txtSend.Text);
try
{
//向子网发送消息
myUdpClient.Send(bytes, bytes.Length, iep);
}
catch (SocketException e)
{
MessageBox.Show("Error:" + e.ToString());
}
finally
{
myUdpClient.Close();
}
}
#14
路过..帮顶。