Título: Conectar 2 programas por medio de internet Publicado por: Krnl64 en 18 Abril 2006, 17:43 pm Hola a todos.
Vereis, tengo 2 programas 1 server y 1 cliente. El Server tiene 1 base de datos y el cliente se tiene que conectar a el para actualizarla. En lan si se hacerlo, pero como lo hago para que puedan conectarse ambos programas desde fuera de lan ? Mi problema es solo como conectarlos. El resto de code no tengo problemas. Abro los puertos y todo, pero no se que tengo que hacer para que se conecten. Agradezco consejos, alguna idea de como hacerlo, o si alguien postea code pues gracias Salu2 Título: Re: Conectar 2 programas por medio de internet Publicado por: Cicklow en 18 Abril 2006, 18:13 pm el problema es este, en internet, podes tener ip dinamica, asike lo que pasa es que tu ip cambia, podes crearte una cuenta en NOIP, y de esta manera podras usar el programa trankilamente, si tenes IP fija tendras que ver si el router (si tenes), te deja acceder desde internet!!
Si el programa funciona bien, en la red, funciona bien en internet, solo tenes que preveer lo de las ip dinamicas! Título: Re: Conectar 2 programas por medio de internet Publicado por: Robokop en 18 Abril 2006, 19:13 pm El codigo es igual desde LAN o fuera de lan como siempre el server escucha y el cliente conecta es todo tal vez puede ser lo que te dijo cicklow tambien fijate que no haya ningun dispositivo de seguridad que este bloqueando el trafico
Título: Re: Conectar 2 programas por medio de internet Publicado por: Krnl64 en 18 Abril 2006, 20:35 pm Gracias por la ayuda.
Como me decis el code es el mismo para afuera que para adentro. Entonces me falla lo de la IP dinamica. Los dispositivos de seguridad no son problema. Como hago que pille la ip ? A traves de No ip ? Gracias Título: Re: Conectar 2 programas por medio de internet Publicado por: NYlOn en 18 Abril 2006, 22:15 pm En la sección Troyanos y virus hay un manual que explica detalladamente los pasos para poder usar no-ip.
Luego tu IP pasaria a ser la creada por no ip (por ejemplo: tuip.no-ip.info) y esa es la que tendrias que poner en tu proyecto. Título: Re: Conectar 2 programas por medio de internet Publicado por: Krnl64 en 18 Abril 2006, 23:40 pm Ok.
Por No-IP averiguo ambas IPS Pero sigo teniendo el mismo problema. Aun sabiendo las 2 IPs que me keda que hacer ? Redireccionar a 1 proxy o algo para poder conectar ? Título: Re: Conectar 2 programas por medio de internet Publicado por: Cicklow en 19 Abril 2006, 01:15 am si el programa esta funcionando bien no tenes porke tener problemas!!!, podes fijarte bien en la sección del troyano enn VB, este te dara una idea mas clara, pero tiene que funcionar!!!
fijate si tenes el XP que el firewalll de windows no te este blokeando!! Título: Re: Conectar 2 programas por medio de internet Publicado por: Krnl64 en 19 Abril 2006, 02:36 am Vaya !!
Casi funciona. Uso No-IP Me da el siguiente error: error 10061 Connection is forcefully Rejected Alguien sabe por que ? Dejo claro que intento conectar 2 aplicaciones a traves de internet mi codes son estos: Código:
Código:
He abierto el puerto del router y el firewall pero me da el mismo error. Ojo !! Tambien corro a la vez el DUC, que no se me olvida No se donde esta el fallo. Ayuda please !!! Gracias Título: Re: Conectar 2 programas por medio de internet Publicado por: Cuasar en 19 Abril 2006, 04:37 am hola voy a intentar ayudar por lo que lei te conectas a Internet a través de un ruter.
la falla puede estar.. en que cuando el cliente llama a ti dir de no ip, esta Web lo redirecciona a tu ip actual, el caso es... que esa ip corresponde a tu ruter, y el servidor de tu programa no se esta corriendo en el ruter, si no que lo estas corriendo en una pc con una ip privada. si es este el caso lo único que debes hacer es una derivación de puertos. por ejemplo si tu aplicación cliente llama a xxx.no-ip.org al puerto 1066 hace que tu ruter derive esa llamada al puerto 1066 de la pc en la que corres el servidor. no te olvides que el ruter es interno entre tu red pribada e Internet solo hace NAT por la boca wan del ruter. espero puedas solucionarlo. salu2. Título: Re: Conectar 2 programas por medio de internet Publicado por: Krnl64 en 19 Abril 2006, 04:50 am Por favor explicame mejor lo de derivar los puertos.
O igual no se me entiende lo que pregunto. En LAN seria asi: ------ -------- PC1 -------------> PC2 Server Cliente Server: Abro puerto 1066 Escucho Cliente: Establezco puerto 1066 Conecto Quiero conectar ambas aplicaciones mediante esto: INTERNET --------- ------------- ------------- Servidor ---------> No IP ---------------> Cliente Igual no lo hago bien. Pongo el Server a la escucha por el puerto 1066 Conecto el Cliente a No-IP por el puerto 1066 Y aqui me da el error ¿Cómo tengo que hacer la conexion ? A ver si alguien me rescata de este pozo sin fondo . Gracias. Título: Re: Conectar 2 programas por medio de internet Publicado por: Cuasar en 19 Abril 2006, 21:05 pm hola bueno primero confirmame como te conectas a internet...
osea... vos tenes una lan, perfecto. estas pc como se conectan a internet?. el tema es asi ? pc1 internet-------------router pc2 pc3 o asi? pc2 internet---------------pc1 --------- router pc3 te cuento existe un sistema de traduccion llamado NAT este sistema se usa para compartir internet en una red pero se puede hacer de muchas formas distinta. los routers (algunos) traen esta opcion de hacer NAT. si tu conexión es la primera que intente graficar mas arriba el que esta haciendo NAT es el router esto significa que cuando tu clinte llama a la ip el que contesta es el ruter y el ruter por mas que tenga el puerto 1066 a la escucha, no tiene nada que responderle a tu cliente ya que no tiene en soft de tu aplicacion respondiendo. solucion a esto? entras en la configuracion de tu router y depende que router sea te fijas en la opcion de port forwarding capaz que en tu ruter tenga algun otro titulo pero el sentido de la frase es = osea traspado de peticiones de puertos. con esto el router cuando escucha que alguien llama a su puerto 1066 lo que hace es chiflarle a la pc que vos espesifiques osea le dice... che... tengo un fulano que me pide no se que a mi puerto 1066, te lo paso y atendelo vos). jeje fue la forma mas facil que se me ocurrio para que entiendas de que se trata. si no le configuras esto a tu router lo que hace es desechar el pedido ya que no puede responderlo. "Ahora" si tu configuracion es la segunda seguramente que existe algun problema en la aplicacion. pero si por LAN funciona fijate que protocolo usas para la conexión si en una lan en protocolo UDP puede funcionar bien pero en internet te conviene TCP/IP ya que el UDP no controla la entrega y si algun frame se pierde en el camino nadie se entera. bueno espero que puedas solucionar tu problema salu2 Título: Re: Conectar 2 programas por medio de internet Publicado por: Krnl64 en 20 Abril 2006, 01:23 am Citar Creo que no se me entiende Conexion Servidor ------> Cliente Mas conocida como conexion inversa lo que hace es que el cliente abre un puerto y el server se conecta atreves de ese puerto con una ip definida antes de enviarse el server El esquema de conexion es este: ----- ------- ------ LAN1----------NO-IP--------LAN2 Como se consigue la conexion ? El server se conecta a NO-IP y el cliente tambien ? Gracias por el interes Título: Re: Conectar 2 programas por medio de internet Publicado por: RED_HORSE en 20 Abril 2006, 02:51 am no lo que se conecta al no ip es el cliente y otra cosa que puede ser es que pusiste mal tus datos en el duc
Título: Re: Conectar 2 programas por medio de internet Publicado por: Cuasar en 20 Abril 2006, 02:56 am Krnl64 aver si nos entendemos.
olvidate por un segundo de no-ip y de tu aplicacion. por lo que veo esto es un problema de comunicacion en lo que se denomina capa 2 del modelo OSI voy a tratar de ser bien claro, cuando vos montas tu aplicacion de server en una pc, esta lo que hace es poner el puerto 1066 "(SOLO DE ESA PC)" a la escucha de peticiones. esto significa que solo en puerto 1066 "(DE ESTA PC)" responde a tu cliente. si esta pc tiene una direccion IP privada (osea que pertenese a una red interna) no es visible desde internet. por eso es importante que describas de que forma te conectas a internet. si te conectas con una PC con la que compartis internet a otras tenes que montar tu server en esa pc que es la que tiene la IP publica. IP Publica = es visible en internet. ej 201.xxx.xxx.xxx IP Privada = no es visible en internet. ej 192.168.0.1/2/3/4/5etc para poder ayudarte decime como esta armada tu red, osea... tenes una pc a la cual le conectas el modem ADSL o CABLEMODEM y la linea de telefono va a este modem? o la linea de telefono va conectada a un router a donde conectas las demas pc? por mas que pienses que no es importante esto es un punto clave para lograr la comunicacion por internet. espero tu respuesta. salu2 Título: Re: Conectar 2 programas por medio de internet Publicado por: Krnl64 en 20 Abril 2006, 03:48 am Citar A ver si nos entendemos Parece que lo voy pillando Perdona por ser tan duro de moyera, pero es que segun he leido, la conexion inversa atraviesa routers, firewalls, etc Mi objetivo es poder conectar ambos programas por internet desconociendo como estan montadas ambas redes Pero dejo claras mis intenciones, NO ES 1 TROYANO Quiero conectar ambas aplicaciones para poder manipular una base de datos. Ahora, la red esta montada de esta manera: ------- ------ ---------- --------- ------- Router------- LAN1--------INTERNET--------Router--------LAN2 Son los Router quien proveen a las LAN de INTERNET Como bien dices, cada equipo posee 1 ip publica (Visible desde internet) y otra ip privada (ip de LAN) Bien, ahora el problema de la conexion. Quiero conectar 1 equipo de LAN1 a otro de LAN2. Lo que debo hacer es conectar ambas IPs publicas (eso creo que has intentado explicarme) y creo que ya se donde tengo el problema. Lo intento hacer asi: Server: Se conecta a mi dominio de no-ip ( por ej: xxx.no-ip.org) Por el puerto x (Creo que esto esta bien, porque se conecta a mi IP publica) Cliente: Lo pongo en escucha por el puerto x Le digo que acepte cualquier solicitud entrante Creo que el problema esta aqui. Tengo puesto este code: Código:
¿Que he de hacer para que el cliente vea la peticion de fuera de LAN y la acepte ? Espero que se me haya entendido o haberlo entendido yo lo que se me queria decir Muchas Gracias Título: Re: Conectar 2 programas por medio de internet Publicado por: Gangrel en 20 Abril 2006, 06:30 am valla que desmadre. Aver si no ago esto mas rebuelto.
scrngs tiene reazon en todo lo que te a dicho pero puede ser que por que usa muchos terminos tecnicos no le entiendas bien. 1-La conexion Inversa NO brica los routers estoy casi seguro que tu problema es ese. Has lo que te diga y te conectaras con exito. Primero la estructura de la conexion. Pc1deLan1---RouterdeLan1---INTERNET---RouterdeLan2---Pc1deLan2 Direcciones IP en la LAN Pc1deLan1 127.1.0.2 RouterdeLan1 127.1.0.1 Pc1deLan2 127.1.0.2 RouterdeLan2 127.1.0.1 Direcciones IP en Internet RouterdeLan1 200.65.87.201 RouterdeLan2 200.65.98.187 Suponiendo que tenemos el Servidor de tu aplicacion en Pc1deLan1 y el cliente en pc1deLan2. En el cliente (Pc1deLan2) no hay ningun problema simplemente en tu codigo de visual le dices que se conecte a la direccion IP publica de RouterdeLan1 (200.65.87.201) o tu dominio de No-IP eso parece que esta claro. En el servidor es donde esta el truco. 1-Con tu codigo de visual pones a Pc1deLan1 a la escucha en el puerto 1066. 2-Como el cliente no esta conectando directamente a Pc1deLan1 sino a RouterdeLan1 (200.65.87.201) le tienes que decir al router que todas las conexiones que le lleguen de internet al puerto 1066 se las pase a Pc1deLan1. A esto se le llama Mapear/Redireccionar puertos y para lograrlo tienes que hacer lo siguiente. En la maquina Pc1deLan1 le das click a "Menu Inicio" despues le das click a "Ejecutar" escrives cmd (en windows XP/2000) o command (en windows 98/95) ya en la consola de comandos del MS-Dos escrives "ipconfig" (xp/2000) o winipcfg (98/95) te apareceran una lista de direcciones IP, buscas el termino que diga "puerta de enlace" o algo similar y anotas la direccion IP que aparezca como dicha puerta de enlase. Esa es la direccion ip en la LAN del RouterdeLan1 suponiendo en este ejemplo 127.1.0.1. Despues te vas a tu navegador IE o Mozilla o el que tengas instalado y en la barra de direcciones escrives la ip del router. Si todo a salido bien estaras en la configuracion del RouterLan1 tienes que buscar alguna opcion de mapeo de puerto o redireccionamiento de puertos donde le tienes que configurar que todo paquete y peticion de conecion sobre el puerto 1066 lo redireccione a Pc1deLan1 (127.1.0.2) Los pasos de configuracion del router no los pongo por que varian dependiendo del router. Con el RouterdeLan1 configurado para que redireccione el puerto 1066 la conexion debe funcionar. Cualquier duda posteala Título: Re: Conectar 2 programas por medio de internet Publicado por: moe88 en 20 Abril 2006, 11:16 am una cosita, tienes puesto el conexion request en el cliente????
el que acepta la conexion deberia ser el server... o es que a tu server le llamas client?? Private Sub client_ConnectionRequest (ByVal requestID As Long) ' Comprueba si el estado del control es cerrado. ' De lo contrario, cierra la conexión antes de ' aceptar la nueva conexión. If client.State <> sckClosed Then Client.Close Client.Accept requestID end if end sub por otro lado ese " if " ahi, nu se nu se.. yo no lo pondria Título: Re: Conectar 2 programas por medio de internet Publicado por: Krnl64 en 20 Abril 2006, 12:39 pm DIOS QUE LIO !! Les voy a postear el code y todo lo que he hecho hasta ahora a ver si por fin consigo que esto funcione. Les agradezco toda su ayuda. Bueno, al grano. Lo 1º que he hecho a sido mapear el puerto 1066 de mi router (creo que se refiere a abrirlo) 2º corro el DUC 3º Ejecuto ambos programas Los codes son estos: Servidor: Código:
Cliente Código:
Al correr ambos programas me sale que el estado de la conexion es SYN_SENT En ambos routers esta mapeado el puerto 1066 ¿Que es lo que falla ? Título: Re: Conectar 2 programas por medio de internet Publicado por: moe88 en 20 Abril 2006, 14:30 pm Private Sub Form_LOad()
ws.close ws.localport = 1066 ws.listen End sub Private Sub ws_Connect() label1.caption = "conectado" End Sub Cliente: Private Sub Form_Load() Ws.RemotePort = 1066 Ws.RemoteHost = "xxx.no-ip.org" '(que es la no-ip del server) Ws.Connect End Sub y en todo caso, si quieres que si falla se reconecte en ws_error pon ws.close ws.connect Título: Re: Conectar 2 programas por medio de internet Publicado por: Krnl64 en 21 Abril 2006, 02:48 am Moe88 donde estan ahora los fallos ? Sigo sin poder conectar. Por favor algun ejemplo de Conexion inversa que rule por internet Gracias Título: Re: Conectar 2 programas por medio de internet Publicado por: NYlOn en 21 Abril 2006, 03:06 am Cambia las lineas:
Código: If Ws.State <> 7 Then Código: If Ws.State <> 7 and Ws.State <> 6 Then Si tenes el timer con un intervalo bajo y no tenes en cuenta el estado 6 ('Conectando...') el socket nunca terminaria de conectar ya que le mandas la accion de nuevo. No se si sera este el problema, pero podes probar. Espero que te sea de ayuda, saludos.- Título: Re: Conectar 2 programas por medio de internet Publicado por: Krnl64 en 21 Abril 2006, 17:26 pm GRACIAS A TODOS, MUCHAS GRACIAS Aparte de algun fallo en el code, no me conectaban los programas porque intentaban conectarse a la misma IP. Ya lo he solucionado. A continuacion, les pongo el code que ya funciona. Es por si a alguien le hace falta. Antes de nada sigan estos pasos: Abrir el puerto que se vaya a utilizar en el router que se vaya a correr el servidor. (opcional) Crearse 1 no-ip Instalar y correr el DUC. Activar tu dominio en el DUC (Carita sonriente) Correr el servidor en tu pc Correr el Cliente en el pc remoto Ya esta !! Ambos programas pueden mejorarse, por ejemplo que soporten varios protocolos / varias conexiones Y porsupuesto la funcionalidad de ambos programas Eso lo dejo para ustedes 1 Observacion, en el cliente sera necesario emular el control Winsock (con api) porque el no hacerlo significa arriesgarse a que si el pc remoto no tiene el control, esto no funcione. Ahora los codes: Código: '''' Código: '''' |