01-03-2019 10:59 AM
Hey everyone,
i am using the Nested Endpoint Actors for communication between different Computers and have run into a problem today that I could not solve as of yet. On one of the computers a second network card has been installed recently that is connected directly to an ethernet camera.
Now the problem is that the "String to Ip" function, that is used by the Nested Endpoint Actor, returns the IP address of this second Network card first and the correct network address (147.142.18.72) second. This leads to the problem that the Nested Endpoint Actors cannot connect to each other anymore (because "String to Ip" returns 169.254.22.17 if it is set to one output).
Is there some way to change the order of the ip adresses that are returned by the function? The machine is running Windows 10, I have allready tried to change the "interace metric"-Setting of the network adapters but this did not solve the problem.
Thanks for your help!
01-03-2019 11:15 AM
Pretty sure to resolve this you need to use .NET.
Here's one way, though it's not perfect as it returns IPv6 addresses and the rest are returned in no particular order, so you'll have to filter the ones on subnets you don't want:
01-04-2019 04:34 AM - edited 01-04-2019 04:36 AM
I think I have had a similar problem to this before and was solved by changing the "network priority order" within windows for the computer in question.
The method of doing this varies by operating system, so have a look on google.
0xDEAD
01-04-2019 04:47 AM
@Kyle97330 wrote:
Pretty sure to resolve this you need to use .NET.
Here's one way, though it's not perfect as it returns IPv6 addresses and the rest are returned in no particular order, so you'll have to filter the ones on subnets you don't want:
Can you elaborate how this solves the OPs problem? With the String to IP node in Array mode you also get a list of (exclusively IPv4) IP addresses and have to then sort that to find your right adapter. The order in which the network adapter adresses are returned is determined by Windows and based on some internal sort criteria. In theory the primary adapter used to be always the first, but that changed in recent Windows versions based on something else.
01-04-2019 05:19 AM - edited 01-04-2019 05:24 AM
Hi!
I recently made a post on the Actor Framework board about something tangentally related.
I also use Nested Endpoints to communicate between actors on remote machines. I am having a problem with abstract messaging to an RT. I want to test to see if this a problem more generally to do with abstract messaging over a network or a with the RT and Actor communication more specifically. I would be wonderful if you could report your experience and/or maybe try something with your setup for me.
I have a similar system where I have a Host actor on a local machine and a Remote actor on a remote machine. Each actor has a Nested Endpoint which mediate the communication between the Host and Remote actors.
Assuming you know about abstract messaging; I want to send the concrete implementation of a message from the Host to the Remote. The concrete implementation is a child, possessed by the Host, of an abstract parent message possessed by the Remote. This is so that the Remote does not depend on the host, resulting in one-way coupling that is an important requirement for my program.
When both the Host and Remote actors are on the same machine, the program works flawlessley: The concrete implementation is passed as a piece of data in a message to the Remote. The Remote receives the message and writes the concrete implementation into its own private data. The Remote then uses the implementation to send messages back to the host.
When the Host is on my local PC and the Remote is running on my RT controller, the program fails: The message from the Host is not recognised by the Remote, instead it appears to be cast to the most generic form (Message.lvclass). The writing of the concrete implementation does not occur and the Remote does not know how to communicate with the Host.
I would very much appreciate it if you could let me know if you have successfully used abstract messaging in a similar manner over a network. Please let me know if you have or have not!
PS I am also very interested to hear of resolutions to your proximate problem, I have a similar issue and resolve it simply turning off my WiFi card! This is a non ideal workaround! I thought that setting my IPs to be static would fix it but oddly this broke the system until I turned my WiFi card on! In summary, I do not understand how IP addressess are returned by LabVIEW and want a better way to sort by adaptor!
PPS It occurs to me that I should try abstract messaging on the RT on its own to see if this is a problem with the Network Endpoint or the RT. Does anyone have any information about abstract messaging on RT?