Do I need to setup port forward for chat room application? - networking

I made an app in python that is able to communicate within LAN. I then tried looking at how to make it so that people outside LAN can join in. So far my only answer has been port forward which I don't want to do as I don't want to risk public IP issues.
I would like to know if there perhaps is a free hosting service for such programs or if there is a way to not use port forward.

Related

Is there a way to get someone's IP address while he is connected to a server?

I'm new here and to all of this stuff but there is a question on my mind for a long time that I didn't find an answer to it. My question is, is there any possible way for someone to get my or someone's else IP address if they are both connected to the same server? For example, let's say that person A and person B are playing a video game that uses dedicated servers, is there any possible way of person A to get the IP address of person B? I know that they can get the IP address of the server that they are connected to it but is there a way for some of them to get even more information and get the IP address of the other client that is connected to the same server?
As I said I'm still a newbie to all this networking stuff so any info would be appreciated!
Thanks!
It all depends on how the application is built, if its only communicating to the server and its not passing the IP to the other clients then its not possible. If the Application have a peer-2-peer functionality you should be able to do "netstat -a" in CMD and see the IP of the other client. Alternative you need to access the server itself.
Not without having the administrative access to the server itself (or if application that they both use, offers this information - but this is rare currently).

"Dynamic" port forwarding?

I'm developing a server that will be hosted on a Raspberry Pi in C# for a customer. One of the biggest issues is they want a local server, but one they could plug in anywhere and have it work.
My brain went to no-ip first but they aren't willing to pay to have a permanent IP, so I found dynu (basically a free version). So having a permanent IP is no problem, just I have to find a way to port forward on the fly... how would that be possible?

Port Forwarding Raspberry Pi 3 on a College Network

In order to get some home automation software to work, I need to have public access to my Raspberry Pi 3. However, I currently reside in an on-campus dorm and as a result am on the college's network and do not have the ability to port forward.
I have a router that connects to the school network via Ethernet and then broadcasts its own network, however, this is still a part of the school's network and I can't port forward this.
I've looked into ways to get around this such as Page Kite, using some form of reverse SSH or HTTPS tunneling, but due to lack of support on Raspberry Pi or daunting setup I'm not really sure what to do. I do have an old HP laptop on Windows 7 that I could use as some sort of slave or server if that would help.
All help is very much appreciated. This has been a major roadblock in me finishing this project.
You don't say what kind of public access you're expecting, but without access to the main router you just need to signup for a dynamic DNS service with a client-based updating tool. All the most known ones (DynDNS Dynu, no-ip) all offer that option as far as I know.
The theory is that you keep the service updated anytime your internal WAN IP changes and they keep your hand-picked url updated with that IP. Then you can access your Pi with that IP thru a web browser or whatever service/port you've setup.
Here's a good starting article - with links to Dynu downloads for Linux that should work for you.
http://www.howtogeek.com/66438/how-to-easily-access-your-home-network-from-anywhere-with-ddns/
And an article from noip.com site on installing their Linux update client
https://www.noip.com/support/knowledgebase/installing-the-linux-dynamic-update-client/

Connect phone app to server in LAN

I have the following scenario:
A Windows PC (with local IP 192.168.0.10) in a small office running a server application on port N.
A smartphone app outside the office which connects to that server and requests data.
In order to make this work I have to do the following:
In the router of the office I open port N and forward requests to PC 192.168.0.10.
I give the (dynamic) IP address of the router to the smartphone user so he can type it in the app. I may use a dynamic DNS service to ease things up.
This works fine but now we want to sell this system to other people. The problem is that it will be very difficult for them to change the router settings, or to use a dynamic DNS service.
Is there a way I can connect the smartphone app to the erver running inside the customer’s office without asking him to configure anything in the router?
I’m thinking of something like TeamViewer. TeamViewer can connect two computers easily and users do not need to know anything about routers, firewalls, port forwarding or dynamic IPs.
TeamViewer must be running some kind of server which works as a bridge between the two computers. We would like to provide such a server to our users (if it’s easy to implement and not very expensive), but we don’t know how.
I think that we could rent some service like www.dyndnsservices.com to provide a dynamic DNS to our customers, but that doesn’t solve the problem of router configuration/port forwarding.
If you wrote nice useful piece of software, I suggest you sell that, don't try to sell the service you know almost nothing about. It is usual for application servers to work (network wise) in the same way as yours, and you don't often see software vendors selling network bridging/forwarding/whatever solutions.

Connecting to a computer remotely

I found a tutorial that shows you how to create server and client programs, and make them communicate over a network.
http://www.win32developer.com/tutorial/winsock/winsock_tutorial_1.shtm
I can make a client program connect to, for example, 192.168.0.4 on my local network, and I can make it connect to 74.125.225.96. But what if I wanted to make it communicate with 192.168.0.4 on the network of 74.125.225.96, instead of just the default server on 74.125.225.96? I'm having a difficult time finding the answer with Google.
Is there even a way to do this? If not, then how are Gnutella and Bittorrent, able to connect computers directly together to share files?
To do what you are asking, 74.125.225.96 would have to be assigned to a router that is configured to forward inbound connections on the target server port to the machine that is running 192.168.0.4.
BitTorrent and other file sharing apps use various techniques, like NAT traversal, hole punching, etc to get connections through routers and firewalls. For example, if one party is behind a router/firewall and the other party is not, then the two apps first try to connect to each other in one direction, and if that fails then they reverse roles - client becomes server and server becomes client - and they try again. If that still fails, they could then connect to a middleman server that both parties have access to, and let it delegate the connections.

Resources