我正在用Java编写一个网络程序,我想将一些数据包发送到255.255.255.255,但是即使将它们发送到192.168.1.255(根据ifconfig命令的输出,它是广播地址)也失败了。但是,当我将它们发送到我伴侣的IP时,它可以正常工作。
这是我程序的代码:
public class StackOverFlow {
public static void main(String[] args) {
Network net= new Network();
Scanner input= new Scanner(System.in);
while(input.hasNext())
net.sendMessage(input.nextLine());
}
}
我已经使用DatagarmSocket和DatagramPacket做到了,这是我对Network的实现:
class Network {
DatagramSocket socket;
public Network() {
try {
socket = new DatagramSocket(8027);
socket.connect(InetAddress.getByName("255.255.255.255"), 8027);
} catch (Exception e) {
System.err.println("Connection failed. " + e.getMessage());
}
listen();
}
public void listen() {
new Thread() {
public void run() {
while (true) {
try {
byte[] buf = new byte[1000];
DatagramPacket packet = new DatagramPacket(buf,
buf.length);
socket.receive(packet);
String message = new String(buf);
System.out.println("Recieved: " + message);
if (message.equals("end"))
return;
} catch (Exception e) {
System.err.println(e.getMessage());
}
}
}
}.start();
}
public void sendMessage(String message){
byte[] buf= message.getBytes();
DatagramPacket packet= new DatagramPacket(buf, buf.length);
try{
socket.send(packet);
}catch(Exception e){
System.err.println("Sending failed. " + e.getMessage());
}
}
没有异常被抛出。
我在一个临时网络中。
我的伴侣正在使用kubuntu 11.04时,我正在使用MAC OS X 10.6。这是ifconfig输出:
lo0: flags=8049 mtu 16384
inet6 ::1 prefixlen 128
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1
inet 127.0.0.1 netmask 0xff000000
gif0: flags=8010 mtu 1280
stf0: flags=0<> mtu 1280
en0: flags=8863 mtu 1500
inet6 fe80::21f:f3ff:fed5:4779%en0 prefixlen 64 scopeid 0x4
inet 192.168.1.1 netmask 0xffffff00 broadcast 192.168.1.255
ether 00:1f:f3:d5:47:79
media: autoselect (100baseTX ) status: active
supported media: autoselect 10baseT/UTP 10baseT/UTP 10baseT/UTP 10baseT/UTP 100baseTX 100baseTX 100baseTX 100baseTX 1000baseT 1000baseT 1000baseT none
en1: flags=8863 mtu 1500
inet6 fe80::21d:4fff:feff:2b4d%en1 prefixlen 64 scopeid 0x5
inet 213.233.170.97 netmask 0xfffffc00 broadcast 213.233.171.255
ether 00:1d:4f:ff:2b:4d
media: autoselect status: active
supported media: autoselect
fw0: flags=8863 mtu 2030
lladdr 00:21:e9:ff:fe:bc:79:b2
media: autoselect status: inactive
supported media: autoselect
en2: flags=8863 mtu 1500
ether 00:1f:f3:b6:2c:be
media: autoselect status: inactive
supported media: none autoselect 10baseT/UTP
vmnet1: flags=8863 mtu 1500
inet 192.168.149.1 netmask 0xffffff00 broadcast 192.168.149.255
ether 00:50:56:c0:00:01
vmnet8: flags=8863 mtu 1500
inet 192.168.73.1 netmask 0xffffff00 broadcast 192.168.73.255
ether 00:50:56:c0:00:08
en0是我用来连接伴侣的设备。
请简化一下,我是新手:)
提前致谢。