So how to call the localhost of the other OS? Well, not too hard really. Since they're both on a shared network, I should just be able to use the IP-adresses. So first, we need to find them.
Finding the IP-address for the Mac host and using it on Windows
Go into the Parallels Desktop menu >> Preferences. Click the tab Advanced and then Network: Change settings. Check the box 'Show in System Preferences'.
Now you can go into the Apple menu >> System preferences >> Network and find the IP-address of the host under the Parallels network provider.
To check if this works, I started up a node server on my Mac, on localhost:4000.
I went in to my Windowsinstallation and tried to call it with the IP-number 10.211.55.2.
Great success! But of course, I don't want to remember that IP-number. So let's edit the hosts-file. And as always, when editing system files, don't forget to run notepad or whatnot as an administrator. The hosts-file, if you managed to avoid it this far, is located in C:\Windows\System32\drivers\etc.
Add the following line to the file:
10.211.55.2 mac.localhost
Save it and you should now be able to call the service with mac.localhost instead. Yay!
Finding the IP-address for the Windows guest and using it on Mac
As you probably guess, you do the same thing. To get the IP-number for the Windows guest, go into Windows, start a Command window and type ipconfig. Look for the IPv4 Address.
Now go back to the Mac and find the hosts-file under /etc. Add the following line to the file:
10.211.55.3 win.localhost
And now you should be able to call the windows localhost from Mac using win.localhost.
ElasticSearch issue
After running Elastic Search on my Mac I wanted to use that instance for my Nancy API I was building on Windows. Since Elastic Search was running on localhost:9200 on the Mac, I assumed the above solution would work without problems. But nope, I just got a Website not found response when I tried to access mac.localhost:9200 in the browser.
Since everything worked with my node server it seemed there wasn't an issue about firewalls or security. I tried some CORS-configuration for a while, thinking that might be the problem. It definitely seemed to have something to do with the Elastic Search configuration and setup.
After quite a long while I found the thing. The Elastic Search config file elasticsearch.yml had the entry network.host: 127.0.0.1. Apparently this entry didn't care about the parallel network adapter at all. So I simply changed the entry to use that IP instead: 10.211.55.2 and restarted Elastic Search.
But wait! Now it works perfectly calling mac.localhost from Windows but I can't call localhost:9200 from the Mac! So another trip into both of the hosts files.
Now I have this in Windows:
10.211.55.3 win.localhost
10.211.55.2 mac.localhost
And this in Mac:
10.211.55.2 mac.localhost
10.211.55.3 win.localhost
All is well and I can develop my .Net-stuff and call services on the Mac. Very neat. I haven't tried the other way around yet, that might be a blogpost for another day.
Way cool, Åsa! Keep the good blogging up - learning from every post!
ReplyDelete