Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Sockets TCP/IP Problemas Con Interfaz Gráfica!
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Sockets TCP/IP Problemas Con Interfaz Gráfica! 
 
Hola a todos!
Hice una programación de socket TCP/IP  para conectar varias centrales de alarmas(hosts) se conecten con un servidor y envien sus mensajes de alarmas.
Tengo una versión del programa servidor que usa un solo formulario y no tiene problemas pero debo aplicar una nueva interfaz grafica mas completa.
Tengo el formulario1, con un menù. Conexión->Fast Ethernet -> Conectar Servidor. Una vez se seleccione esta opcion, aparece otro formulario que solicita los parametros de conexión del servidor
 formulario2

cuando se haga click en conectar este formulario2 desaparece y se deben empezar a manejar las funciones de conexión del la clase del formulario1. Debe conectar el socket y mostrar en el TexArea de la parte inferior: "Servidor activo a la escucha de conexiones entrantes"

Esto es lo que hago en el formulario2 (ParametrosConexion):

PUBLIC f_bandera AS Boolean = FALSE
PUBLIC f_puerto AS Integer = 0
PUBLIC f_clientes AS Integer = 0

PUBLIC SUB Conectar_Click()
  f_bandera = TRUE
  f_puerto = TextNumPuerto.Text
  f_clientes = ComboNumCliente.Index
  ParametrosConexion.hide()  
END

PUBLIC FUNCTION func_bandera() AS Boolean
  RETURN f_bandera  
END

PUBLIC FUNCTION func_puerto() AS Integer
  RETURN f_puerto
END

PUBLIC FUNCTION func_clientes() AS Integer
  RETURN f_clientes
END

Esto es lo que hago en el formulario1: Cuando se seleccionar la opcion conectar del menu, se abre el formulario2 y llamo a la clase ParametrosConexion.class (parametro) del formulario2 para saber si se ha conectado y obtenga el numero de puerto (parametro.func_puerto()) y el numero de clientes (parametro.func_clientes()) para enviarselos al procedimiento Socket_Listen().

PUBLIC parametro AS NEW ParametrosConexion

PUBLIC SUB Menu3_1_1_Click()    
  ParametrosConexion.Center
  ParametrosConexion.Show()
  
  IF parametro.func_bandera() = TRUE THEN
     Socket_listen(parametro.func_puerto(), parametro.func_clientes())
  ENDIF  
END

PUBLIC SUB Socket_listen(n_puerto AS Integer, n_clientes AS Integer)
  Server.Type = Net.Internet
  Server.Port = n_puerto
  Server.Listen(n_clientes)

  IF Server.Status = Net.Active THEN
    TextArea1.Text = "Servidor activo a la escucha de conexiones entrantes" & gb.NewLine
    Menu3_1_1.Enabled = FALSE
    Menu3_1_2.Enabled = TRUE
  END IF  
END

El problema es que no logro realizar ni mostrar las funciones del socket de la clase formulario1 a partir de los datos del formulario2.
Como debo conectarlo ambos formularios?. Le agradezco muchisimo su respuesta
 



 
Luthien_Tinu - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Sockets TCP/IP Problemas Con Interfaz Gráfica! 
 
Hola
Veo bastantes cosas que no me parecen bien pero la verdad no acabo de entender todo eso del formulario1 y el formulario2. De hecho no entiendo nada de nada. Dices que en el botón conectar llamas al formulario 2 sin embargo en otro sitio dices que el botón conectar está en el formulario 2 y en la rutina de conectar está esto

PUBLIC SUB Conectar_Click()
f_bandera = TRUE
f_puerto = TextNumPuerto.Text
f_clientes = ComboNumCliente.Index
ParametrosConexion.hide()
END

osea que asignas los valores a unas variables publicas y escondes el formulario ¿donde cargas ese otro supuesto formulario 2? Desde luego no en conectar_click()

Eso aparte de que el manejo de sockets parace mal hecho y que el uso de variables públicas lo veo por completo innecesario pero es que como no consigo entender nada puesss ...

Tu quieres preguntar por pantalla un puerto y conectar a ese puerto (donde se supone que ya hay alguien a la escucha) osea que tu haces un socket cliente que se conecta a un socket servidor ya activo y no al reves.

Eso de las variables públicas funcionar funciona pero es una mala forma de hacer eso. Si tu quieres enviar esos valores a otro formulario la forma correcta es
Dim F as new formulario2(var1, var2)

y en el formulario2 entonces tienes
public $Var1 as string, $Var2 as string

public sub _new(var1 as string, var2 as string
   $var1=var1
   $var2=var2
end

Y ya está. Simplemente cuando creas el formulario2 le pasas lo que quieras que en este caso son dos variables string, pero que podría ser una conexión a base de datos, un socket, un formulario, una clase, ... cualquier cosa que se te ocurra.

no entiendo nada.
 



 
última edición por soplo el Viernes, 29 Octobre 2010, 16:42; editado 3 veces 
soplo - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Sockets TCP/IP Problemas Con Interfaz Gráfica! 
 
Sere mas explicita, esta version es la de servidor.
Formulario1 (SocketServ)
formulario1

A partir de esta elección, se llama a formulario 2
Formulario2 (ParametrosConexion)
 form2  

 formulario2_1288374919_909836

Necesito los datos del fomulario2 porque de esta manera se establece por cuál puerto el servidor se mantendrá a la escucha de las centrales y el limite de clientes.

Solo quiero que cuando en el formulario2 se haga click en el boton conectar este formulario se cierra y quede solo activo el formulario1 porque en esta es donde se realizan todas las funciones de sockets. Aun tengo ese problema
 



 
Luthien_Tinu - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Sockets TCP/IP Problemas Con Interfaz Gráfica! 
 
Vale.

En el menú tu eliges conectar. En ese momento debe ocurrir lo siguiente:
Dim S as NEW socket
Dim F as NEW formulario2(S)
f.showmodal()

Es decir, creas un socket y se lo envias al formulario2. Allí haces con él lo que quieras y cuando lo cierres (tras el showmodal) tendrás tu socket en las condiciones que lo dejara el otro. Si en formulario2 se dió a conectar lo normal será que esté conectado. Si se dió a cancelar o hubo un error no lo estará. Por eso tras el showmodal deberías comprobar el estado en que se encuentra tu socket y actuar en consecuencia.
if S.status<>7 then
   print "no estoy conectado
endif


De esa forma te queda todo limpio. Tu creas un socket, se lo envias a un nuevo formulario donde puedes dar parámetros de conexión, conectass o no y el resultado lo devuelves al primero. El formulario 2 lo quitas y te quedas con tu socket nada mas.

¿es eso?
 



 
última edición por soplo el Viernes, 29 Octobre 2010, 19:36; editado 1 vez 
soplo - 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 Lazos De Control De Procesos E Interfaz Gr... francopenizzotto General 4 Miercoles, 03 Marzo 2010, 15:45 Ver último mensaje
francopenizzotto
No hay nuevos mensajes Sockets TCP/IP MiguelVelandia Aplicaciones/Fragmentos de Código 3 Domingo, 12 Septiembre 2010, 20:57 Ver último mensaje
MiguelVelandia
No hay nuevos mensajes Problemas De Compatibilidad Con La Interfaz atm44 General 5 Domingo, 09 Septiembre 2012, 01:29 Ver último mensaje
Dani26
No hay nuevos mensajes Controles En Aplicación Gráfica GTK, Sim... viejito Instalación 6 Domingo, 04 Enero 2015, 20:16 Ver último mensaje
shordi
 

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

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
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