• Miércoles 6 de Noviembre de 2024, 08:29

Autor Tema:  Problemas Con Sockets Udp.  (Leído 1164 veces)

Quity_Ibias

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Problemas Con Sockets Udp.
« en: Domingo 27 de Enero de 2008, 16:14 »
0
Hola!

Estoy programando una aplicación que utiliza sockets udp. Necesito enviar una estructura que yo misma he declarado.

struct Datos_Componentes_Conexion
{

int Estado;
int Puerto_Origen;
int Puerto_Remoto;
int Direccion_Origen;
int Direccion_Remota;
int RST;
Componentes_TCB *TCB;
bool Pasivo;
int Puerto_Modificar;
int Puerto_Inicio_Conexion;


};

Para enviar necesito utilizar la funcion sendto, pero está función envía un char*, asi que no se como hacer para enviarlo. ¿Hay alguna forma de convertir esa estructura en un char *?. ¿Podría declarar un Datos_Componenes_Conexion *dc y enviar dicho puntero?

Muchas graciasss Si alguien me pudiese mostrar un ejemplo se lo agradecería.

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Problemas Con Sockets Udp.
« Respuesta #1 en: Domingo 27 de Enero de 2008, 16:31 »
0
Tenes que enviar bytes y a sendto pasarle como parametro un puntero a tu estructura. En este caso solo tenes un inconveniente TCB (Componentes_TCB *TCB;) es un puntero y por lo tanto no tiene ningun sentido en el programa que reciba esta estructura ... o cambias la estructura o envias otra cosa.

Ejemplo orientativo:
Código: Text
  1.  
  2. Datos_Componenes_Conexion dc;
  3. sendto(s, &dc, sizeof(dc), 0, &toaddr, sizeof(toaddr));
  4.  
  5.  

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

Quity_Ibias

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Re: Problemas Con Sockets Udp.
« Respuesta #2 en: Domingo 27 de Enero de 2008, 17:09 »
0
Gracias por contestar!!

Realizo lo que usted me dijo:

Datos_Componenes_Conexion dc;
sendto(s, &dc, sizeof(dc), 0, &toaddr, sizeof(toaddr));

Pero me da un error
Error   8   error C2664: 'recvfrom' : cannot convert parameter 2 from 'Datos_Componentes_Conexion *__w64 ' to 'char *'   

Y he estado mirando y si lo declaro de la siguiente forma no me daria el error:

Datos_Componentes_Conexion *dc;

sendto(s, (char*)dc, sizeof(dc), 0, &toaddr, sizeof(toaddr));

Sería correcto, o me daría problemas al recibirlos?, tambien los recibo con Datos_Componentes_conexion *dc.

Gracias, de todas formas.

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Problemas Con Sockets Udp.
« Respuesta #3 en: Domingo 27 de Enero de 2008, 17:22 »
0
Es lo mismo (aunque en tu caso tenes que usar memoria dinamica), en ambos casos necesitas el casting [(char *)] excepto que siendo dc un puntero cuando hagas sizeof te devolvera 4, hace sizeof del nombre de la estructura o de *dc.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.