entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

Duda al crear una dll en c++

Buenos días,

estoy realizando una dll para utilizar sockets. Esta dll va a recibir llamadas desde otros lenguaje de programación a la larga.

Esta libería también tendrá algún hilo (no sé si uno o varios aún, pero al menos uno sí).

Mi principal duda es si los identificadores de los sockets y los de los hilos, se guardarán de una llamada (ejemplo createAndConnectSocket()) a otra ( ejemplo sendMessage()).

Espero haberme explicado bien.

Gracias.

2 Respuestas

3votos

Leonardo-Tadei Puntos227320

Hola Alejandro,

una DLL no debería guardar el estado de nada, ya que debe comportarse como una biblioteca de funciones a la que invocar, y el diseño de las funciones implica una llamada, un proceso, una salida y la liberación de todos los recursos asignados.

Por más que la implementes en C++ y puedas técnicamente escribir la biblioteca al estilo POO, luego la interfaz de la DLL serán solo funciones.

Si además la vas a usar desde otros lenguajes, la salida de las funciones deberán ser solo tipos nativos, porque por ejemplo no ha correlación a nivel de código de máquina entre un struct de C y un record de Pascal, por más que técnicamente cumplan la misma función.

La propuesta de David es muy útil, porque te indica hacer ua función que devuelva un identificador de la conexión, para que sea tu programa el que maneja el hilo de ejecución y pueda llamar a otra función que use la conexión creada.

Salu2

2votos

Braben Puntos550

Probablemente no contesto a la pregunta pero, ¿y si createAndConnectSocket() devuelve un identificador que luego requiere el sendMessage()? De esta forma además tienes la seguridad de que funcionará en multihilo.

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta