ayuda con socket

Iniciado por weggi, 17 Octubre 2011, 22:57 PM

0 Miembros y 1 Visitante están viendo este tema.

weggi

hola tengo este problema y nose como solucionarlo


#include <winsock.h>
int main()
{
   int conex;
   int sockaddr;
WSADATA wsa;
WSAStartup(MAKEWORD(2,0),&wsa);
SOCKET sock;
sock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
struct hostent *direc;
direc=gethostbyname("smtp.live.com");
u_short puerto;
puerto=htons(587);
struct sockaddr_in remoto;
remoto.sin_family = AF_INET;
remoto.sin_port = htons(587);
remoto.sin_addr = *((struct in_addr *)direc->h_addr);
memset(remoto.sin_zero,0,8);
connect(sock,(sockaddr *)&remoto, sizeof(sockaddr));
return 0;
}



este es el error del compilador:

19 syntax error before ')' token

y otra cosa soy nuevo en esto y no entiendo bien la linea del connect precisamente donde dice "sockaddr *" que funcion hace?

Queta

Te da error de compilación ya que en el segundo parámetro de connect estás haciendo un casting a sockaddr pero al tener una variable definida, y que no usas para nada, con este nombre, creo que el compilador interpreta que quieres hacer el casting a dicha variable. Como consecuencia tienes dos opciones:


  • Cambiar el nombre de la variable.
  • Borrar la variable.

Cita de: weggi en 17 Octubre 2011, 22:57 PM
y otra cosa soy nuevo en esto y no entiendo bien la linea del connect precisamente donde dice "sockaddr *" que funcion hace?

http://msdn.microsoft.com/en-us/library/windows/desktop/ms737625.aspx
http://msdn.microsoft.com/en-us/library/windows/desktop/ms740496.aspx
"Intenta no volverte un hombre de éxito, sino volverte un hombre de valor." Albert Einstein.

weggi

hola queta gracias por responder, pero cuando quito la linea

int sockaddr;

me devuelve otro error más por esa razón la puse

18 `sockaddr' undeclared (first use in this function)


:-\

Eternal Idol

Eso compila bien ... ¿Que compilador usas?
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

weggi

#4
 hola Eternal Idol uso gcc

Eternal Idol

Renombra la extension a .cpp o usa struct antes de sockaddr:

connect(sock, (struct sockaddr*)&remoto, sizeof(struct sockaddr));
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

weggi

gracias master era la extensión  ;D
problema solucionado  ;-)

Eternal Idol

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón