这是我第一次用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中。
请简单,我是新手:)
提前致谢。
答案 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,这是你的建议。