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

这是我第一次用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是我的广播地址,我得到一个具有相同消息的exception。

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

请简单,我是新手:)

提前致谢。

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

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

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

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