Buenas les pido ayuda, no uso rauter solo modem o de vez en cuando mi telefono, lo que quiero es abrir los puertos para que un amigo pueda acceder a mi pagina creada con xampp y un programa en c++ con sfml que usa el puerto 45000 de prueba por la ip publica, ya e intentado varias formas pero al usar una pagina online para verificar los puertos me dice que esta cerrado me pueden decir como puedo hacer porfavor se los agradecere mucho.
edit:
Uso zorin os basado en ubuntu 16.04.
No puedes abrir puertos en modem/móvil en muchas compañías.
Suelen darte una ip pública compartida. Es decir, tu y yo hora mismo podemos tener la misma ip. Enroutan el tráfico con ips privadas como un router lo hace en local.
Puedes utilizar algún servicio de hosting para crear aplicaciones cliente servidor sin necesidad de abrir puertos. O utlizar una shell tcp/ip directa hacia un equipo que si pueda abrir puertos.
Ambos equipos que quieres comunicar los mandas al mismo servidor y el servidor se encarga de responder con los datos de cada uno al otro.
El funcionamiento es como si tu ahora desde el modem escribes en el foro:
Hola!
Y yo con tu programa hago get a la página del foro y leo Hola.
Es decir en este caso usarias el servidor del foro para comunicar 2 clientes sin abrir puertos.
Puedes hacer tu aplicación PHP en un hosting y comunicar los clientes.
Es más trabajo pero también te evita tener que abrir puertos y te permite que el servidor guarde copias, procese la información o haga cualquier cosa que quieras durante la comunicación. Por ejemplo en vez de Hola! podrías mandar:
Hola, voy a comprar un Mustang (comando*Enviar imágenes de "google.com/search?q=Coches%20Mustang"*)
En el servidor buscas (comando* *) y lees todo lo que esté dentro y lo interpretas como quieras.
El cliente y el servidor los puedes hacer en cualquier lenguaje de programación. Puedes usar el navegador por defecto como cliente si no te limitan las restricciones de seguridad que tienen(por ejemplo un chat podrías hacerlo) es otra de las ventajas, que no requieres de software que el usuario se tenga que descargar. Depende de lo que quieras hacer.