当我尝试将Socket设置为255.255.255.255时抛出异常

时间:2011-07-04 14:21:57

标签: java networking client

这是我第一次用java编程网络。 我想在一个小型网络中使用它。我一直在寻找一种方式,以某种方式发送到整个网络中的所有节点。让他们知道我的存在。有人告诉我发送数据包到255.255.255.255所以网络中的任何人都会收到它。

所以我写了这段代码:

try{
    Socket socket= new Socket("255.255.255.255", 3550);
}catch(Exception e){
    System.out.println("oops! " + e.getMessage());
}

但是,不幸的是它会打印出来:

oops! Permission denied 

当我将“255.255.255.255”更改为“192.168.1.3”,这是我的队友的IP地址时,它工作正常。此外,当我将“255.255.255.255”更改为“192.168.1.255”时,根据ifconfig是我的广播地址,我得到一个具有相同消息的异常。

我在一个特设网络中 我的操作系统是MAC OS X 10.6
我的配偶是在Windows Vista Home Premium Service Pack 1中。

请简单,我是新手:)

提前致谢。

3 个答案:

答案 0 :(得分:5)

Socket()创建一个流(TCP)套接字。您无法广播流。您需要一个数据报套接字(UDP),因此您应该使用更专业的类DatagramSocket()

答案 1 :(得分:1)

我认为Java TCP套接字仅支持单播通信,因为您希望使用数据报套接字。

http://download.oracle.com/javase/1.4.2/docs/api/java/net/DatagramSocket.html

答案 2 :(得分:1)

尝试连接 TCP 套接字到不存在的IP地址255.255.255.255(a)是不可能的,并且(b)不会在任何地方发送任何内容。这与发送 UDP数据报目标地址为255.255的 DatagramSocket 不同。 255.255,这是你的建议。