Programación General > C/C++

 Hilos en C++ Borland con APi

(1/2) > >>

witchyfairy:
Hola estoy haciendo un programa tipo messenger en c++ borland pero me lo pidieron con la api en donde a cada cliente le asigno un hilo le paso una estructura de la siguietne manera:
struct IP nueva_IP;
lect_con = CreateThread(NULL, 0,(LPTHREAD_START_ROUTINE)Hilo_del_cliente,(void *) &nuevaIP,0,&Thread_lect);

en la funcion del hilo hago esto:

void *Hilo_del_cliente(void *nueva_IP){
    //este es el cast
     void *estructura=(void*)nueva_IP;

La cosa es que necesito usar los datos de la estructura pero no se como acceder a los datos de esta alguien podria ayudarme pro favor  :wub:

Nota: Disculpen si mi post esta mal pero es la primera vez que uso un foro y no he leido bien las reglas proque me interesabamas exponer mi problema pero ahora voy a leer gracias

Eternal Idol:
El casting esta mal, en realidad no hay casting nueva_IP ya es un void *.

Mejor asi:

--- Código: C++ ---DWORD WINAPI Hilo_del_cliente(LPVOID lpParameter){  IP *nueva_IP = (IP*)lpParameter; 

witchyfairy:

--- Cita de: "Eternal Idol" ---El casting esta mal, en realidad no hay casting nueva_IP ya es un void *.

Mejor asi:

--- Código: C++ ---DWORD WINAPI Hilo_del_cliente(LPVOID lpParameter){  IP *nueva_IP = (IP*)lpParameter; 
--- Fin de la cita ---

La cosa es que cuando pongo :


--- Código: C++ --- void *Hilo_del_cliente(void *nueva_IP){      struct IP *nuevo = (IP*)nueva_IP; [/quote]

me sale un error de sintaxis y no me deja avanzar!!!

Eternal Idol:
¿Que error? Copialo y pegalo por favor. ¿Y el codigo que yo puse te da error?

witchyfairy:

--- Código: C++ ---struct IP{        in_addr IPDireccion;        unsigned short IPPuerto;        SOCKET IPSocket;        }IP; void AcceptoConexiones(SOCKET Socket)  SOCKET SockConexion;  struct IP nuevaIP;  int tamano = sizeof(DireccionLocal),crear;  while(1){        SockConexion = accept (Socket, (struct sockaddr*)&DireccionLocal,&tamano);        mnsj =  mnsj + " nConexion entrante desde:n" + (String)inet_ntoa(DireccionLocal.sin_addr) + (String)(DireccionLocal.sin_port);        nuevaIP.IPDireccion = DireccionLocal.sin_addr; //aqui lleno los datos de mi estructura IP        nuevaIP.IPPuerto = DireccionLocal.sin_port;         nuevaIP.IPSocket = SockConexion;        lect_con = CreateThread(NULL, 0,(LPTHREAD_START_ROUTINE)Hilo_del_cliente,(void *)&nuevaIP,0,&Thread_lect);//aqui ya hize el cast de estructura a void         } }//----------------------------------------------------------------------------void *Hilo_del_cliente(void *nuevaIP){ //aqui recibo mi estructura como void      struct IP *nueva = (IP*)nuevaIP;  //aqui me da error  (E2188:Error syntax)     ShowMessage("Entre al hilo que atiende al cada cliente");     SOCKET RemoteSocket = ((IP*)nuevaIP)->IPSocket; //Y cuando intento entrar a los datos de la estructura tambien me da error (E2188:Error syntax)     unsigned short portclient = ((*IP)nuevaIP)->IPPuerto;   Espero me entiendas, y muchas gracias por responderme  :beer:

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa