Please Note This forum exists for community support for the Mango product family and the Radix IoT Platform. Although Radix IoT employees participate in this forum from time to time, there is no guarantee of a response to anything posted here, nor can Radix IoT, LLC guarantee the accuracy of any information expressed or conveyed. Specific project questions from customers with active support contracts are asked to send requests to support@radixiot.com.
Fail to receive 'I am' response
-
I created an application on my linux server using BACnet4J library to talk to a few devices on my network. However, the application cannot recognize the 'I-Am' responses after sending the 'Who-Is' command out. A 'com.serotonin.bacnet4j.exception.BACnetTimeoutException: No response from instanceId xxxxx' would be threw out. However, the application can receive data which is sent directly to that linux server without any problem.
Wireshark showed that the data was correctly received at 47808 port, so I guess there might be something wrong on the software side, but doesn't have any clue yet.
Does anyone have some ideas on this issue?BTW, same application works pretty well when I put it on my windows PC, though.
-
Hi Jinchun Wei, welcome to the forum!
It's almost certainly the bind address you've used. Is it the exact IP of the machine? Try using the network address (ip address, bitwise & with subnet mask) like 192.168.1.0 for the 192.168.1.0/24 network.
-
Yes, I was binding the exact server IP.
And I tried to bind the network address and now the server can neither receive broadcasting nor the direct messages.
Am I defining the network as below:
IpNetwork net = new IpNetworkBuilder().withLocalBindAddress("192.168.1.0")
.withSubnet("192.168.1.0", 24)
.withPort(47808)
.build();
Am I correct on this? Any other settings that I need to pay attention to? -
Try 0.0.0.0 for the bind address
-
This worked, thanks.
Is there a specific rule which I could follow to decide in what cases should I bind actual IP, network address, or "0.0.0,0"? -
It's operating system dependent. As you observed Windows worked with the exact address bound, but Linux did not. I would suspect you could make Linux work with the exact address bound too, if you configure its receiving of the broadcasts. Those are the only three options that really make sense to try, so it's usually not a big deal to do trial and error.