|
Página 1 de 1
|
Autor |
Mensaje |
4octavio4
Programador
Registrado: Noviembre 2009
Mensajes: 100
Edad: 31 Ubicación:
|
Gb.net En Redes Locales
Estoy tratando de utilizar el componente gb.net para realizar una conexión entre dos programas gambas por internet.
He leido el capítulo del manual y estoy utilizando una conexión tcp. Además, he probado desde una terminal con telnet y el programa responde correctamente.
El problema viene cuando intento lo mismo desde otro ordenador en una red local. Primero, no sé exactamente que poner en "IP del servidor" en el cliente. He probado con la IP interna, pero no me funciona. No sé como se podría hacer.
|
#1 Martes, 18 Enero 2011, 16:02 |
|
|
soplo
Analista Programador
Registrado: Septiembre 2009
Mensajes: 843
Edad: 44
|
Re: Gb.net En Redes Locales
Hola
Según entiendo estas queriendo usar un socket para conectar dos ordenadores.. En el que va a escuchar tienes que poner un serversocket e indicar un puerto (p. ej. el 40000). Anotas cual es su ip y ahí tienes que hacer listen para que se ponga a la escucha y ahora te vas al que va a enviar y le pones un socket que envie a la ip con el puerto 40000 y usas el connect.
Aquí tienes un ejemplo de código para usar un socket. Si tienes mas dudas pregunta
Enlace
última edición por soplo el Martes, 18 Enero 2011, 16:40; editado 1 vez
|
#2 Martes, 18 Enero 2011, 16:37 |
|
|
4octavio4
Programador
Registrado: Noviembre 2009
Mensajes: 100
Edad: 31 Ubicación:
|
Re: Gb.net En Redes Locales
Hola
Según entiendo estas queriendo usar un socket para conectar dos ordenadores.. En el que va a escuchar tienes que poner un serversocket e indicar un puerto (p. ej. el 40000). Anotas cual es su ip y ahí tienes que hacer listen para que se ponga a la escucha y ahora te vas al que va a enviar y le pones un socket que envie a la ip con el puerto 40000 y usas el connect.
Aquí tienes un ejemplo de código para usar un socket. Si tienes mas dudas pregunta
Enlace
Sí, creo que esa parte ya la tengo hecha y funcionando (al menos eso creo, como digo con telnet me funciona) pero a la hora de conectar dos ordenadores en la misma red, en mi red local, he probado con la ip privada y no me funciona. Y como la ip pública es igual para ambos ordenadores, al estar ambos en la misma red, pues no me funciona tampoco con ella.
|
#3 Martes, 18 Enero 2011, 18:17 |
|
|
fabianfv
Analista Programador
Registrado: Octobre 2009
Mensajes: 495
Edad: 50 Ubicación:
|
Re: Gb.net En Redes Locales
Octavio, deberías proveer más información.
¿Cuáles son las IP de las pc que intentas conectar?
¿Tienes firewalls bloqueando puertos en alguna de esas pc?
¿Podrías mostrar tu código para ver si es ahí donde está el problema? Considera que si te conectas via telnet, tal vez la parte del servidor está correcta pero la parte del cliente no.
=================== Cómo programar con Gambas
Speed Books: informática libre.
|
#4 Martes, 18 Enero 2011, 18:46 |
|
|
4octavio4
Programador
Registrado: Noviembre 2009
Mensajes: 100
Edad: 31 Ubicación:
|
Re: Gb.net En Redes Locales
Vale, voy a intentar enseñar el código.
De un lado, en el servidor, hay un botón para crear una partida y luego un evento Socket_Read que hace el trabajo.
PUBLIC SUB crearpartida_Click()
Servidor = NEW ServerSocket AS "Servidor"
Servidor.Type = Net.Internet
Servidor.Port = CInt(Puerto.Text)
TRY Servidor.Listen()
IF ERROR THEN
informacion.text = informacion.text & "Error en la creación del servidor."
ELSE
informacion.text = informacion.text & "Servidor creado. Esperando cliente. Escuchando en el puerto " & Servidor.Port & " ."
ENDIF
unirseapartida.enabled = FALSE
crearpartida.enabled = FALSE
END
PUBLIC SUB Servidor_Connection(RemoteHostIP AS String)
informacion.text = informacion.text & "\nLa IP " & RemoteHostIP & " trata de conectarse. Pulse iniciar partida."
Remoto = Servidor.Accept()
EstadoRed = "servidor"
iniciarpartida.enabled = TRUE
iniciarpartida_click
PUBLIC SUB Socket_Read()
'SERVIDOR
DIM RemoteX AS Integer
DIM RemoteY AS Integer
TRY INPUT #LAST, RemoteX, RemoteY
FMain.B2.X = RemoteX
FMain.B2.Y = RemoteY
PRINT #LAST, FMain.B1.X & " " & FMain.B1.Y
END
PUBLIC SUB Socket_Close()
Message.Error("Se ha cerrado la conexión. Cerrando Programa...")
ME.Close
END
Por otro lado, en el cliente hay un botón para unirse y un timer que controla cada cuanto tiempo envía o recibe los datos.
Bueno, realmente el servidor y el cliente es el mismo programa y provee las opciones para ser servidor o cliente.
En fin, también he probado a abrir dos veces el programa en el mismo ordenador , crear una partida en uno y unirme con el otro y funciona.
Respecto a que IP tiene el ordenador al que quiero conectar... En este caso sería 192.168.1.101, me refiero a la privada.
Respecto a los cortafuegos, pues la verdad es que no lo sé. Pero me imagino que los puertos altos, como 6000 o cosas así no deberían estar bloqueados por defecto, ¿no?
última edición por 4octavio4 el Martes, 18 Enero 2011, 20:33; editado 1 vez
|
#5 Martes, 18 Enero 2011, 20:32 |
|
|
|
Temas parecidos
Temas parecidos
|
Página 1 de 1
|
Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado Usuarios registrados conectados: Ninguno
|
No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas No puede adjuntar archivos Puede descargar archivos No puede publicar eventos en el calendario
|
|
|
|
|