Sending packets to 255.255.255.255 by Java DatagramSocket fails

前端 未结 4 1471
傲寒
傲寒 2020-12-11 01:55

I\'m programming a networking program in java , and I want to send some Packets to 255.255.255.255, but it fails , even when I send them to 192.168.1.255, which according to

相关标签:
4条回答
  • 2020-12-11 02:10

    Rather than connect your DatagramSocket to the broadcast address, just construct the DatagramPacket to target it, i.e.

    DatagramPacket dp = new DatagramPacket(byteArray, byteArray.length, InetAddress.getByName("255.255.255.255"), yourPortNumber);
    

    And like magic, you've sent a broadcast. And then to catch it on the other side, just have that end listening on that port:

    DatagramSocket dsock = new DatagramSocket(samePortUsedAbove);
    DatagramPacket dp = new DatagramPacket(byteArray, byteArray.length);
    dsock.receive(dp);
    
    0 讨论(0)
  • 2020-12-11 02:18

    While using broadcasting you need to enable it

    socket.setBroadcast(true);
    

    Another thing is that you have to make sure that your router is configured right if the two computers are in two different nets. Broadcasts are usually by default not routed. Further if you have a router having a wirless interface and a wired interface these broadcasts may not work either if broadcasts are not enabled(There may be hardware which forward broadcasts between those two interfaces by default).

    0 讨论(0)
  • 2020-12-11 02:19
    192.168.1.255 
    
    • Please check your subnet mask in your network. It might be possible that your sending machine and the receiving machine are not part of the same network.
    • Please check that the receiving machine exists in your network.
    • If there's a router in between your machines, I don't think the message will be transmitted.
    0 讨论(0)
  • 2020-12-11 02:19

    If I remember correctly, you cannot receive from broadcast-adresses, but only send to them! So on the receiving side, you must be listening on "your" IP specifically.

    0 讨论(0)
提交回复
热议问题