Even after perusing various old threads in this form that seem to bear on my question, I still can't figure out if it's a simple question or a complex one, and I'm just confused--though I just can't see how what I want to do could possibly be too difficult. Bear in mind that I (alas) know next to nothing about networking and the internet and have, for whatever reason, always found the subject hard to wrap my brain around.

I'm just trying to figure out how to set up an app that can connect to other instances of itself on other computers via the internet. I get the basics of how to use a socket, but I'm stumped by the complexities of IP addresses. If I have multiple computers connecting to the internet via a wireless router (which is in turn connected to a cable modem), what IP address can a computer somewhere else use to connect to one of mine? It's my understanding that I have a "public IP address" from my ISP, and then each of my computers has a local IP address that's assigned by my router and meaningful only within the context of my own little network...right? So a computer somewhere else can't send to one particular computer's "local" IP address...but the "public" one isn't specific to any *one* of my computers, so that doesn't seem right either. Can someone please educate me a bit on this?

Basically each of the computers on your LAN [local network, ie those computer on THIS side of your router] all have an IP address, which normally startes with 10. or 193.

However, on the OTHER side [the Internet] of your router, your LAN appears as a single IP addreess [this address may be static or dynamic, depending on your ISP, and the services you rent from them]. The only way an external web server knows which of your LAN computers to send a webpage to, is by information coded by your router into the request packet, which is sent back along with the web content.

So the only way for you to write an app that can communicate peer-to-peer via the internet is to employ port-forwarding on your router.... which basiclly pokes a great big hole in your fire wall

_________________Dave SisemoreiMac I7[2012], OSX Mountain Lion 10.8.3 RB2012r2.1Note : I am not interested in any solutions that involve custom Plug-ins of any kind

You'll have to get your true IP address. ipchicken.com is good for that.

Then you'll have to connect up to your apps using that IP address, but you'll also need to set up port forwarding on your router.

Forward the port(s) that your app uses to the router IP of the computer you want to connect to. For example, if your machine has an IP of 192.168.1.100 and it uses port 8980 you'd forward port 8980 to 102.168.1.100 - then just connect to your machine via the true IP you got from ipchicken.com and make sure you're connecting up to the correct port you forwarded, and everything should work just fine.

Port forwarding limits you to a single local machine. You couldn't have an outside computer talk to more than one of your local machines, or have one outside computer talk to one local machine while another outside computer talks to a different local machine. That may not be an issue for you, but be aware of the limitation.

Most peer-to-peer networking uses a public machine as a go-between, either as a relay or to at least initiate the conversation. You can poke a hole in your firewall for your own enjoyment, but it isn't recommended for more than just you and your friends.

Tim, your info addressed what was the most puzzling aspect of this, to me. I had read elsewhere about all of this port forwarding business, but I was baffled, because obviously there are plenty of apps floating around that let you connect across the internet without having to muck with this kind of thing...so I assumed I had to be missing something. If I understand you correctly, what you're saying is that such apps accomplish this by having both machines connect to some third party (like a website) to initiate things? That makes sense (even if it also isn't what I want to hear...). Bafflement un-baffled!

Port forwarding limits you to a single local machine. You couldn't have an outside computer talk to more than one of your local machines, or have one outside computer talk to one local machine while another outside computer talks to a different local machine. That may not be an issue for you, but be aware of the limitation.

May not be relevant in your instance, but FYI:You can port forward to more than one machine.It is perfectly acceptable to have inbound traffic on port 8001 (for example) forward to machine 1 on the LAN on port 22, then inbound traffic on port 8002 forward to machine 2 on the LAN on port 22 etc.

This opens up possibilities if the client application is HTTP aware, and understands redirects.using an example of having two web servers on your LAN, but only one real IP address:It is perfectly acceptable to have inbound traffic on port 8001 (for example) forward to machine 1 on the LAN on port 80, then inbound traffic on port 8002 forward to machine 2 on the LAN on port 80 etc.

Using a service like http://www.dyndns.com (their redirect is called WebHop Redirect) you could give every one of your machines on your LAN a DNS entry with the ability to accept inbound traffic to port 80 on each local machine. You'd add the records at http://www.dyndns.com and the corresponding port forwarding in your router.

_________________%Invalidforumsignatureexception% user signature not found

_________________• program, n.: A magic spell cast over a computer allowing it to turn one's input into error messages. tr.v. To engage in a pastime similar to banging one's head against a wall, but with fewer opportunities for reward

Correct, but I would imagine the average deployment of UPnP would be to home market, since the enterprise users know how to handle port forwarding and all that jazz. The average home user doesn't know how, and generally doesn't care to know how, they just want it to work.