Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Gb.net En Redes Locales
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje 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.
 



 
4octavio4 - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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 
soplo - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Gb.net En Redes Locales 
 
soplo escribió: [Ver mensaje]
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.
 



 
4octavio4 - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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.
 
fabianfv - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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.
PUBLIC SUB unirseapartida_Click()
DIM spuerto AS Integer
DIM sIP AS String


  IF Cliente = NULL THEN
    TRY spuerto = Val(Puerto.text)
    IF ERROR THEN
     Message.Error("Número de puerto inválido")
     RETURN
    ENDIF
    IF spuerto < 1 OR spuerto > 65535
     Message.Error("Numero de puerto inválido")
     RETURN
    ENDIF
    
    sIP = Net.Format(IP.Text)
    IF sIP = "" THEN
     Message.Error("IP inválida")
     RETURN
    ENDIF
    Cliente = NEW socket AS "Cliente"
    Cliente.Host = sIP
    Cliente.port = spuerto
    Cliente.Connect()
    informacion.text = informacion.text & "\nIntentando la conexión, espere..."

  ENDIF
END

PUBLIC SUB Cliente_Ready()
 informacion.text = informacion.text & "\nConexión Establecida. Espere un momento."
 Control.Enabled = TRUE
 EstadoRed = "cliente"
 iniciarpartida_click
 
  
  
END

PUBLIC SUB Control_Timer()
  DIM Info AS String
  DIM RemoteX AS Integer
  DIM RemoteY AS Integer
  

  TRY INPUT #Cliente, RemoteX, RemoteY
  
  PRINT #Cliente, FMain.B2.X & " " & FMain.B2.Y

  FMain.B1.X = RemoteX
  FMain.B1.Y = RemoteY

END


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 
4octavio4 - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Sockets Locales Mi Pesadilla soplo General 7 Sabado, 26 Febrero 2011, 03:17 Ver último mensaje
soplo
No hay nuevos mensajes Declaración De Variables Locales Automát... Shell General 2 Viernes, 30 Noviembre 2012, 10:08 Ver último mensaje
Shell
No hay nuevos mensajes Redes De Empresa Con GNU/Linux tincho Mundo Linux 14 Sabado, 06 Octobre 2018, 10:09 Ver último mensaje
shordi
No hay nuevos mensajes Mapas Locales En Gb.map gatoviejo Controles/Librerías/Componentes 3 Lunes, 27 Abril 2020, 22:17 Ver último mensaje
gatoviejo
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 0 invitados
Usuarios registrados conectados: Ninguno


 
Lista de permisos
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



  

 

cron