Título: ¿que librerias tengo que añadir para usar sockets en c/c++? Publicado por: hackstyle18 en 13 Julio 2010, 21:32 pm Buenas pues intento compilar este ejemplo pero añado la libreria de winsock, pero soy nuevo en esto de sockets en c y nose si ai que añadir alguna mas. aqui dejo el source del programa que intento compilar, es un cliente:
Código: int main() { WSADATA wsa; SOCKET sock; struct hostent *host; struct sockaddr_in direc; int conex; char Buffer[1024]; int len; //Inicializamos WSAStartup(MAKEWORD(2,2),&wsa); //resolvemos el nombre de dominio localhost, esto se resolverá a 127.0.0.1 host=gethostbyname("localhost"); //creamos el socket sock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); if (sock==-1) { printf("Error al crear el socket"); return -1; } //Definimos la dirección a conectar que hemos recibido desde el gethostbyname //y decimos que el puerto al que deberá conectar es el 9999 con el protocolo ipv4 direc.sin_family=AF_INET; direc.sin_port=htons(9999); direc.sin_addr = *((struct in_addr *)host->h_addr); memset(direc.sin_zero,0,8); //Intentamos establecer la conexión conex=connect(sock,(sockaddr *)&direc, sizeof(sockaddr)); if (conex==-1) //si no se ha podido conectar porque no se ha encontrado el host o no //está el puerto abierto { printf("No se ha podido conectar\n"); return -1; } printf("[MiniXat para tutorial de sockets MazarDZone Foro]\n"); printf("[escribe el texto a enviar o 'salir' para salir ]\n"); while (len!=-1 && strcmp(Buffer,"salir")!=0) //mientras el socket no se haya desconectado //y no se escriba salir { printf("Texto a enviar:"); fgets(Buffer,1023,stdin); //pedir texto a enviar por pantalla len=send(sock,Buffer,strlen(Buffer),0); //enviar el texto que se ha introducido } return 0; } Título: Re: ¿que librerias tengo que añadir para usar sockets en c/c++? Publicado por: Littlehorse en 13 Julio 2010, 21:35 pm Incluye la librería winsock2:
Código
Si no funciona, postea el error de compilación. Saludos Título: Re: ¿que librerias tengo que añadir para usar sockets en c/c++? Publicado por: hackstyle18 en 13 Julio 2010, 21:40 pm Me tira este error tanto con la libreria winsock.h y la winsock2.h,
incluyo las librerias y nada: Código: #include <stdio.h> #include <winsock2.h> Código: D:\Documents and Settings\manuyelvira\Escritorio\Cliente.o:Cliente.c:(.text+0x45)||undefined reference to `_WSAStartup@8'| D:\Documents and Settings\manuyelvira\Escritorio\Cliente.o:Cliente.c:(.text+0x54)||undefined reference to `_gethostbyname@4'| D:\Documents and Settings\manuyelvira\Escritorio\Cliente.o:Cliente.c:(.text+0x79)||undefined reference to `_socket@12'| D:\Documents and Settings\manuyelvira\Escritorio\Cliente.o:Cliente.c:(.text+0xbb)||undefined reference to `_htons@4'| D:\Documents and Settings\manuyelvira\Escritorio\Cliente.o:Cliente.c:(.text+0x119)||undefined reference to `_connect@12'| D:\Documents and Settings\manuyelvira\Escritorio\Cliente.o:Cliente.c:(.text+0x1e2)||undefined reference to `_send@16'| ||=== Build finished: 6 errors, 0 warnings ===| Título: Re: ¿que librerias tengo que añadir para usar sockets en c/c++? Publicado por: @synthesize en 13 Julio 2010, 21:46 pm Has copiado algo del enlace que te puse en el otro post? Te recuerdo que era para GNU/Linux y parece que estás compilando bajo windows.
Título: Re: ¿que librerias tengo que añadir para usar sockets en c/c++? Publicado por: Eternal Idol en 13 Julio 2010, 21:46 pm Esos son errores al enlazar, te falta la libreria de importacion, necesitas pasarle al enlazador esto: -lwsock32.
No se que IDE estaras usando, con suerte podes agregarlo en: Project>>Project Options>>Parameters. Título: Re: ¿que librerias tengo que añadir para usar sockets en c/c++? Publicado por: Littlehorse en 13 Julio 2010, 21:49 pm hackstyle18, estas con Visual Studio, no? prueba a:
Código
O bien agrega Ws2_32.lib a las dependencias adicionales en la configuración del linker. Saludos! Advertencia - mientras estabas escribiendo, una nueva respuesta fue publicada. Probablemente desees revisar tu mensaje. Título: Re: ¿que librerias tengo que añadir para usar sockets en c/c++? Publicado por: Eternal Idol en 13 Julio 2010, 21:56 pm No, el mismo tipo de error con estilo VC++:
Cliente.obj : error LNK2019: unresolved external symbol __imp__MessageBoxA@16 referenced in function _main Título: Re: ¿que librerias tengo que añadir para usar sockets en c/c++? Publicado por: Littlehorse en 13 Julio 2010, 22:01 pm Si, es verdad, viendo bien los errores parece mas Code::Blocks. Si es ese el caso, olvidate del pragma y revisa la configuración del proyecto para agregar los parámetros adicionales al linker, tiene que estar mas o menos por donde te menciono EI.
Saludos Título: Re: ¿que librerias tengo que añadir para usar sockets en c/c++? Publicado por: leogtz en 13 Julio 2010, 23:28 pm Si es code::block está en:
Settings->compiler and debugger->linker settings Título: Re: ¿que librerias tengo que añadir para usar sockets en c/c++? Publicado por: hackstyle18 en 14 Julio 2010, 00:27 am Gracias por todas vuestras respuestas :P e tenido que salir y no e podido verlo antes, probare las soluciones que me dais, seguro que si que es lo de añadir los parametros al enlazador del code::blocks, ^^ gracias ;)
EI: juntando mensajes. Gracias, ya lo e solucionado añadiendo la libreria del SDK al linker del code::blocks gracias a todos , Saludos ;) Título: Re: ¿que librerias tengo que añadir para usar sockets en c/c++? Publicado por: Eternal Idol en 14 Julio 2010, 01:09 am De nadas ::)
|