none
Como crear un winsock en tiempo de ejecusion VB6.0????? RRS feed

  • Pregunta

  • Bueno solo agradeceria que me ppudieran ayudar en eso, ya que estoy desarrollando varias aplicasiones independiente que utilizan el winsock para conectarme con varios PLC, y me he visto en la necesidad de hacerlo en tiempo de ejecusion, por que cuando cierro la conexion de winsock me salta un error de conexion al intertar conectarme de nuevo.

     

    Por lo regular puedo reestablecer una conexion al cabo de unos minutos, pero no me convence que cada ves que no puedo tengo que reiniciar el programa.

     

    Les agradecere cualquier ayuda que me puedan dar...

    jueves, 3 de julio de 2008 17:58

Respuestas

  •  

     

    Buenas, para poder cargar controles en tiempo de ejecucion debes agregar un control de ese tipo al proyecto y en tiempo de diseño poner la propiedad index en "0".

    Luego en el punto del programa que quieras crear un control de ese tipo solo debes poner la sentencia:

    Load Winsock1(index)

    donde index es un numero que no exista en la colección. Por ejemplo si existiera ya el control Winsock1(5) no podrias realizar Load Winsock1(5) porque estarías tratando crear un control con un identificador existente.

    Para ese caso recomiendo mantener un array de N elementos, y recorrerlos en el momento que se desea utilizar para saber cual esta libre.

     

    Saludos,

    Germán.

     

    ------------------------------------------------------------------------------------------------------------------------

    Si la ayuda fué útil no olviden calificarla! =)

    martes, 8 de julio de 2008 21:38
  •  

    Hola Salcerin,

    En realidad no espero a llegar al final de los elementos para comenzar por el primero. Sino que consulto el estado de los controles en el array, al primero que encuentro libre lo uso. Ahora tengamos en cuenta que el control estaría libre en dos situaciones, si el estado del sock es "cerrado" y si ese sock aun no se ha creado. Para el segundo caso si consultaras el estado te daría error. Para esos casos me hice la siguiente función:

     

    Code Snippet
    Public Function estaLibre(ByRef sock As Winsock) As Boolean
        On Error GoTo ErrHnd
        estaLibre = IIf(sock.State <> sckClosed, False, True)
        Exit Function
    ErrHnd:
        estaLibre = True
    End Function

     

     

    Bueno, espero que responda tu consulta.

     

    Saludos,

    Germán.

     

    ------------------------------------------------------------------------------------------------------------------------

    Si la ayuda fué útil no olviden calificarla! =)

    jueves, 10 de julio de 2008 14:12

Todas las respuestas

  •  

     

    Buenas, para poder cargar controles en tiempo de ejecucion debes agregar un control de ese tipo al proyecto y en tiempo de diseño poner la propiedad index en "0".

    Luego en el punto del programa que quieras crear un control de ese tipo solo debes poner la sentencia:

    Load Winsock1(index)

    donde index es un numero que no exista en la colección. Por ejemplo si existiera ya el control Winsock1(5) no podrias realizar Load Winsock1(5) porque estarías tratando crear un control con un identificador existente.

    Para ese caso recomiendo mantener un array de N elementos, y recorrerlos en el momento que se desea utilizar para saber cual esta libre.

     

    Saludos,

    Germán.

     

    ------------------------------------------------------------------------------------------------------------------------

    Si la ayuda fué útil no olviden calificarla! =)

    martes, 8 de julio de 2008 21:38
  • Bueno, tu comentario me va ser de gran ayuda solo una pequeñña duda,


    Por ejemplo si existiera ya el control Winsock1(5) no podrias realizar Load Winsock1(5) porque estarías tratando crear un control con un identificador existente.

    Para ese caso recomiendo mantener un array de N elementos, y recorrerlos en el momento que se desea utilizar para saber cual esta libre.



    Con eso te refieres a que debo crear un array de un numero determinado de elementos y que cuando llegue al final usar los primeros????


    Muchas gracias German por la ayuda que me ofreces....

    miércoles, 9 de julio de 2008 2:21
  •  

    Hola Salcerin,

    En realidad no espero a llegar al final de los elementos para comenzar por el primero. Sino que consulto el estado de los controles en el array, al primero que encuentro libre lo uso. Ahora tengamos en cuenta que el control estaría libre en dos situaciones, si el estado del sock es "cerrado" y si ese sock aun no se ha creado. Para el segundo caso si consultaras el estado te daría error. Para esos casos me hice la siguiente función:

     

    Code Snippet
    Public Function estaLibre(ByRef sock As Winsock) As Boolean
        On Error GoTo ErrHnd
        estaLibre = IIf(sock.State <> sckClosed, False, True)
        Exit Function
    ErrHnd:
        estaLibre = True
    End Function

     

     

    Bueno, espero que responda tu consulta.

     

    Saludos,

    Germán.

     

    ------------------------------------------------------------------------------------------------------------------------

    Si la ayuda fué útil no olviden calificarla! =)

    jueves, 10 de julio de 2008 14:12
  • jaja too bien...

    Ahora si me podre largar de la escuela, eso era lo que me hacia falta...

    German te estoy tan agradecido que me dan ganas de darte una hermana... aunque no creo que eso sea algo bueno para ti, pero en fin...

    Muchas gracias señor German....

    sábado, 12 de julio de 2008 1:03

  • Jajaja... como es eso de largarte de la escuela gracias a unos winsocks???
    Me tiene mas que intrigado...


    Saludos,
    Germán.
    lunes, 14 de julio de 2008 11:47
  • Necesito hacer una clase en la que tenga una funcion que me devuelva el ip del pc como hago?? cual seria el codigo de la clase en VB para poderlo optener en un dato de tipo String
    viernes, 5 de junio de 2009 6:35