相关疑难解决方法(0)

Java中的UDP广播

早上.

我是Java和套接字连接的新手,但我试图在端口8001上将255.255.255.255上的UDP数据包/广播发送到设备.我可以将数据发送得很好,但是当接收数据时,连接超时.我有一个数据包嗅探器,我可以看到数据包发送,然后设备响应.

我很确定这是我在代码中遗漏的新手错误,但我已经坚持了一段时间,任何帮助都会受到赞赏.

 m_Socket = new DatagramSocket(m_SERVERPORT);
 InetAddress address = InetAddress.getByName(m_SERVERIP);


 m_DataPack = new DatagramPacket(m_SERVERCMD.getBytes(), m_SERVERCMD.getBytes().length,
 address, m_SERVERPORT);
 m_Socket.setBroadcast(true);
 m_Socket.connect(address, m_SERVERPORT);

 m_Socket.send(m_DataPack);
 m_DataPack = new DatagramPacket(data, data.length,
 address, m_SERVERPORT);


 m_Socket.receive(m_DataPack); // This is where it times out


 data = m_DataPack.getData();
 String received = data.toString();
 System.out.println("Received: " + received);
 m_Socket.close();
Run Code Online (Sandbox Code Playgroud)

谢谢和Gig'Em.

编辑:

我不确定这是否有帮助但是当我观察m_Socket对象时,我可以在发送之前看到以下内容:

bound = true;
close = false;
connectedAddress = Inet4Address (id = 32) (-1,-1,-1,-1);
connectedPort = 8001;
connectState = 1;
created = true;
impl = PlainDatagramSocketImpl;
oldImpl = false; …
Run Code Online (Sandbox Code Playgroud)

java udp broadcast

6
推荐指数
2
解决办法
3万
查看次数

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

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

所以我写了这段代码:

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

但是,不幸的是它打印:

oops! Permission denied 
Run Code Online (Sandbox Code Playgroud)

当我将"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中.

请简单,我是新手:)

提前致谢.

java networking client

2
推荐指数
1
解决办法
418
查看次数

标签 统计

java ×2

broadcast ×1

client ×1

networking ×1

udp ×1