FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Haciendo un sistema de comunicación por sockets sencillito
He seguido este sencillo tutorial para hacer un cliente servidor, lo he probado bajo locahost y funciona pero me gustaría saber que he de hacer para que funcione entre dos ordenadores que sólo están conectados a través de Internet.
Adjunto el código fuente que he creado yo con la ayuda del tutorial. Para que funcione primero ejecutad el servidor y luego el cliente. En el cliente según está poneis localhost en el Edit que está a la derecha del Label "Computadora" y escribíd lo que querais en el Memo de arriba del cliente como si fuera un chat. Saludos. Última edición por kakarotv5 fecha: 03-10-2007 a las 00:35:21. |
#2
|
||||
|
||||
no necesitas nada adicional si estás directamente conectado a internet.
en el campo de host, pornes tu ip de internet y listo
__________________
Conoce mi blog http://www.edgartec.com |
#3
|
|||
|
|||
Cita:
EDITO: Ahora me ha ocurrido algo muy curioso, he abierto el puerto 9923 (que es el puerto que usa mi programilla por defecto) y al intentar conectarme poniendo mi IP pública me sale el siguiente mensaje de error: Project Project1.exe raised exception class ESocketError with message 'Asynchronous socket error 10053'. Process stopped. Use Step or Run to continue.' Es curioso porque si no abro el puerto 9923 no sale ningún mensaje de error (aunque tampoco conecta). Ayudadme por favor que parece que voy por buen camino, muchas gracias y un saludo. Última edición por kakarotv5 fecha: 03-10-2007 a las 14:54:24. |
#4
|
||||
|
||||
PC1 IP:80.1.2.3
PC2 IP: 213.1.2.3 La PC1 llama a la PC2 por el puerto 9923. Lo que quiere decir que la PC2 debe tener el puerto 9923 abierto y un programa esperando comunicación. PC1 IP:80.1.2.3 Port: 1000 (para salir elige un puerto al azar) PC2 IP:213.1.2.3 Port 9923 esperando PC1 IP:80.1.2.3 Port: 1000 -----> Port 9923 de PC2 IP:213.1.2.3 A menos que haya un Firewall que no deje salir paquetes (problema para PC1) o un Firewall que no deje recibir paquete por ciertos puertos (problema para PC2) no debería haber problemas. También hay que decirle al router de PC2 (si no está en monopuesto) que todo lo que llegue para el puerto 9923 lo envía a la direccion interna de PC2 (normalmente 192.168.xxx.yyy o 172.26.xxx.yyy) |
#5
|
||||
|
||||
Esto es sobre el error 10053
Cita:
|
#6
|
|||
|
|||
Cita:
Cita:
Gracias y un saludo. |
#7
|
||||
|
||||
En el PC1 no es necesario abrir el puerto 1000. Normalmente los Firewalls y los routers dejan salir por cualquier puerto, pero solo entrar por algunos (80 http, 21 ftp, etc.)
La segunda parte es los que se llama NAT. - Supongamos tu router tiene la IP pública 80.1.2.3. - Supongamos que tu pc tiene la IP privada 192.168.1.2. Pues: debes entrar al router, ir a la parte de NAT y decirle: Todo lo que entre desde el PUERTO 9923 hasta el PUERTO 9923 se lo mandas a la IP 192.168.1.2. Nota: si está en monopuesto, todo esto no vale. Funciona como si guera un modem y todo lo que entra al router entra directamente a tu PC. |
#8
|
|||
|
|||
Cita:
Mi idea es usar el mismo puerto tanto para el cliente como para el servidor. Tengo esto |
#9
|
||||
|
||||
Del puerto por el que sale se encarta el sistema operativo. Lo que hace es ver el primero que tiene libre y usarlo.
Si quieres probarlo has lo siguiente: - te conectas a una página (www.google.es por ejemplo) sin cerrar el navegador haces lo siguiente en una consola (inicio-->ejecutar-->cmd) y escribes netstat o netstat -n. En la columna de Direccion Local verás tu IP y por qué puerto está saliendo. En la columna de Direccion Remota verás la dirección IP a la que estás conectado y el puerto. Código:
C:\>netstat -n Conexiones activas Proto Dirección local Dirección remota Estado TCP 127.0.0.1:4378 127.0.0.1:4379 ESTABLISHED TCP 127.0.0.1:4379 127.0.0.1:4378 ESTABLISHED TCP 127.0.0.1:4380 127.0.0.1:4381 ESTABLISHED TCP 127.0.0.1:4381 127.0.0.1:4380 ESTABLISHED TCP 127.0.0.1:4386 127.0.0.1:4387 ESTABLISHED TCP 127.0.0.1:4387 127.0.0.1:4386 ESTABLISHED TCP 127.0.0.1:4394 127.0.0.1:4395 ESTABLISHED TCP 127.0.0.1:4395 127.0.0.1:4394 ESTABLISHED TCP 127.0.0.1:9999 127.0.0.1:2509 TIME_WAIT TCP 192.168.152.200:1797 209.85.137.18:80 ESTABLISHED TCP 192.168.152.200:1964 192.168.152.252:445 ESTABLISHED TCP 192.168.152.200:1966 192.168.152.252:3050 ESTABLISHED TCP 192.168.152.200:2511 66.249.91.83:80 ESTABLISHED TCP 192.168.152.200:4130 192.168.152.252:445 ESTABLISHED TCP 192.168.152.200:4443 66.249.91.19:80 ESTABLISHED TCP 192.168.152.200:4810 64.233.183.147:80 CLOSE_WAIT Código:
C:\Documents and Settings\Duilio>netstat Conexiones activas Proto Dirección local Dirección remota Estado TCP PC-Duilio:4378 localhost:4379 ESTABLISHED TCP PC-Duilio:4379 localhost:4378 ESTABLISHED TCP PC-Duilio:4380 localhost:4381 ESTABLISHED TCP PC-Duilio:4381 localhost:4380 ESTABLISHED TCP PC-Duilio:4386 localhost:4387 ESTABLISHED TCP PC-Duilio:4387 localhost:4386 ESTABLISHED TCP PC-Duilio:4394 localhost:4395 ESTABLISHED TCP PC-Duilio:4395 localhost:4394 ESTABLISHED TCP PC-Duilio:1797 mg-in-f18.google.com:http ESTABLISHED TCP PC-Duilio:1964 192.168.152.252:microsoft-ds ESTABLISHED TCP PC-Duilio:1966 192.168.152.252:3050 ESTABLISHED TCP PC-Duilio:2511 ik-in-f83.google.com:http ESTABLISHED TCP PC-Duilio:4130 192.168.152.252:microsoft-ds ESTABLISHED TCP PC-Duilio:4443 ik-in-f19.google.com:http ESTABLISHED TCP PC-Duilio:4810 nf-in-f147.google.com:http CLOSE_WAIT - http = 80 - ftp = 21 - mg-in-f18.google.com = 209.85.137.18 |
#10
|
||||
|
||||
Creo que puede andar por ahí, pero no es NAT.
Creo que eso es para que de una dirección y un puerto dado se conecten a una dirección y un puerto especícico. De todas formas debería funcionar si lo configuras bien. El NAT es solo enviar lo que entre por un puerto enviarlo a una dirección especificada (por ese mismo puerto) Para que leas un poco más sobre el tema: http://www.monografias.com/trabajos2...ctor-nat.shtml |
#11
|
||||
|
||||
Precisamente lo que necesitas hacer es que todas las peticiones al puerto de tu aplicacion sean direccionadas a la ip local (donde se ejecuta el server). eso lo debes de hacer directamente en tu router. aca puedes darte una idea de como hacerlo www.portforward.com
Slds |
#12
|
|||
|
|||
Al final lo he conseguido
Al final lo he conseguido.
He conseguido establecer una comunicación entre dos ordenadores que sólo están conectados a través de Internet, únicamente he hecho lo siguiente: En el ordenador PC1 se ejecuta el servidor, que lo único que hace es escuchar por el puerto 9923. He abierto el puerto 9923 en el router de este PC. Luego en el ordenador PC2 se ejecuta el cliente, se pone la IP pública o real del PC2 en el Edit que está a la derecha del Label "Computadora" y luego se escribe lo que se quiera en el Memo de arriba como si fuera un chat. También he abierto el puerto 9923 en el router de este PC. El servidor recibirá las cadenas de texto inmediatamente. De esta forma la comunicación es unilateral, por lo que además he ejecutado en el PC1 el cliente y en el PC2 el servidor y he realizado la misma operación, con lo que se consigue una comunicación bilateral estilo chat. Me doy por satisfecho, sólo tengo que mejorar un poco el programa y seguir trasteando para conseguir mis propósitos. Al final no he tenido que configurar los routers de modo que todo lo que les llegue por el puerto 9923 lo envíen a la direccion interna de los PC´s. Supongo que será porque están en monopuesto. Muchas gracias y un saludo. |
#13
|
||||
|
||||
Felicitaciones!
Cuando tengas una aplicación interesante pasate por el club y muéstranosla. También podrías hacer un pequeño ejemplo de un "micro-mini-chat" y ponerlo en la parte de trucos, por si alquien quiere aprender a hacerlo. |
#15
|
||||
|
||||
Hola
Aqui hay un ejemplo sencillo de un chat, no me acuerdo si lo saque de los ejemplos del delphi o de donde lo saque, pero funciona. Saludos Última edición por Caral fecha: 24-01-2008 a las 22:35:13. |
#16
|
|||
|
|||
Gracias, le echaré un vistazo.
Por cierto Caral, hace unos días me lei un tutorial que dejaste en el Wiki, se llama Conectar Access Ado, es un gran tutorial y me ayudó mucho. Sigue así. Saludos. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Comunicacion en red (DDE / Sockets) | mxoscar | Varios | 1 | 20-07-2007 08:48:05 |
Que estoy haciendo Mal | esimon | SQL | 4 | 04-07-2006 21:55:25 |
Haciendo un Sweep | AMINOA2R | Firebird e Interbase | 5 | 07-07-2005 15:00:36 |
comunicacion entre sockets | Brando | Internet | 5 | 27-10-2004 17:20:42 |
...haciendo negocios... | Jure | Humor | 0 | 11-10-2004 23:38:24 |
|