java组广播的问题。
为什么接收程序没有收到广播数据报?
程序是下面的
/********************************************************************************************/
广播端:
/********************************************************************************************/
import java.net.*;
public class BroadCast extends Thread
{ String s = "**************你好!\n";
int port = 63000;
InetAddress group = null;
MulticastSocket socket = null;
DatagramPacket packet = null;
byte[] data = s.getBytes();
public BroadCast()
{
try
{
group = InetAddress.getByName("224.0.1.28");
packet = new DatagramPacket(data,data.length,group,port);
socket = new MulticastSocket(port);
socket.setTimeToLive(1);
socket.joinGroup(group);
}
catch(Exception e){}
} public void run()
{ while(true)
{ try
{
System.out.println("BroadCast :"+s);
socket.send(packet);
}
catch(Exception e){}
}
} public static void main(String args[])
{
new BroadCast().start();
}
}
/********************************************************************************************/
接收端程序:
/********************************************************************************************/ import java.net.*;
public class Receive extends Thread
{
int port = 63000;
InetAddress group = null;
MulticastSocket socket = null;
DatagramPacket packet = null;
String message = "";
byte data[] = new byte[8192];
public Receive()
{
try{
group = InetAddress.getByName("224.0.1.28");
packet = new DatagramPacket(data,data.length,group,port);
socket = new MulticastSocket(port);
socket.joinGroup(group);
}
catch(Exception e){ e.printStackTrace(); }
}
public void run()
{
System.out.println("Start recive!");
while(true)
{
try{
System.out.println("Wait for broadcast....");
socket.receive(packet);
System.out.println("got it");
message=new String(packet.getData(),0,packet.getLength());
System.out.println(message);
}
catch(Exception e){e.printStackTrace();}
}
} public static void main(String args[])
{
new Receive().start();
} }
为什么接收程序没有收到广播数据报?
程序是下面的
/********************************************************************************************/
广播端:
/********************************************************************************************/
import java.net.*;
public class BroadCast extends Thread
{ String s = "**************你好!\n";
int port = 63000;
InetAddress group = null;
MulticastSocket socket = null;
DatagramPacket packet = null;
byte[] data = s.getBytes();
public BroadCast()
{
try
{
group = InetAddress.getByName("224.0.1.28");
packet = new DatagramPacket(data,data.length,group,port);
socket = new MulticastSocket(port);
socket.setTimeToLive(1);
socket.joinGroup(group);
}
catch(Exception e){}
} public void run()
{ while(true)
{ try
{
System.out.println("BroadCast :"+s);
socket.send(packet);
}
catch(Exception e){}
}
} public static void main(String args[])
{
new BroadCast().start();
}
}
/********************************************************************************************/
接收端程序:
/********************************************************************************************/ import java.net.*;
public class Receive extends Thread
{
int port = 63000;
InetAddress group = null;
MulticastSocket socket = null;
DatagramPacket packet = null;
String message = "";
byte data[] = new byte[8192];
public Receive()
{
try{
group = InetAddress.getByName("224.0.1.28");
packet = new DatagramPacket(data,data.length,group,port);
socket = new MulticastSocket(port);
socket.joinGroup(group);
}
catch(Exception e){ e.printStackTrace(); }
}
public void run()
{
System.out.println("Start recive!");
while(true)
{
try{
System.out.println("Wait for broadcast....");
socket.receive(packet);
System.out.println("got it");
message=new String(packet.getData(),0,packet.getLength());
System.out.println(message);
}
catch(Exception e){e.printStackTrace();}
}
} public static void main(String args[])
{
new Receive().start();
} }
我用UDP的例子测试网络,能正常收到数据得出:网络没问题!
防火墙开启--》再测试--》能收到数据得出:端口没被封!
是不是要操作系统提供的某项关键服务我哭啊!
大家帮我看看,问题依然没解决!