| 
	
		|  Autor | Tema: ¿que librerias tengo que añadir para usar sockets en c/c++?  (Leído 13,471 veces) |  
	| 
			| 
					
						| hackstyle18 
								
								 Desconectado 
								Mensajes: 14
								
								
								
								
								
								   | 
 
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: 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;
 }
 
 |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| Littlehorse 
								All the world's a stage 
								Moderador
								      Desconectado 
								Mensajes: 2.714
								
								 
								Nie Dam Sie
								
								
								
								
								
								     | 
 
Incluye la librería winsock2: #include <winsock2.h>
 Si no funciona, postea el error de compilación.  Saludos
 
 |  
						| 
								|  |  
								|  |  En línea | 
 
 An expert is a man who has made all the mistakes which can be made, in a very narrow field. |  |  |  | 
			| 
					
						| hackstyle18 
								
								 Desconectado 
								Mensajes: 14
								
								
								
								
								
								   | 
 
Me tira este error tanto con la libreria winsock.h y la winsock2.h, incluyo las librerias y nada: #include <stdio.h>#include <winsock2.h>
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 ===|
 |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| @synthesize 
								Wiki  Desconectado 
								Mensajes: 640
								
								 
								Another Brick in the Wall
								
								
								
								
								
								     | 
 
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. |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| Eternal Idol 
								Kernel coder ajeno al tiempo 
								Moderador
								      Desconectado 
								Mensajes: 5.970
								
								 
								Israel nunca torturó niños, ni lo volverá a hacer.
								
								
								
								
								
								     | 
 
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.
 |  
						| 
								|  |  
								|  |  En línea | 
 
 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
 |  |  |  | 
			| 
					
						| Littlehorse 
								All the world's a stage 
								Moderador
								      Desconectado 
								Mensajes: 2.714
								
								 
								Nie Dam Sie
								
								
								
								
								
								     | 
 
hackstyle18, estas con Visual Studio, no? prueba a: #pragma comment( lib, "ws2_32.lib" )
 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. |  
						| 
								|  |  
								|  |  En línea | 
 
 An expert is a man who has made all the mistakes which can be made, in a very narrow field. |  |  |  | 
			| 
					
						| Eternal Idol 
								Kernel coder ajeno al tiempo 
								Moderador
								      Desconectado 
								Mensajes: 5.970
								
								 
								Israel nunca torturó niños, ni lo volverá a hacer.
								
								
								
								
								
								     | 
 
No, el mismo tipo de error con estilo VC++:
 Cliente.obj : error LNK2019: unresolved external symbol __imp__MessageBoxA@16 referenced in function _main
 |  
						| 
								|  |  
								|  |  En línea | 
 
 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
 |  |  |  | 
			| 
					
						| Littlehorse 
								All the world's a stage 
								Moderador
								      Desconectado 
								Mensajes: 2.714
								
								 
								Nie Dam Sie
								
								
								
								
								
								     | 
 
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
 |  
						| 
								|  |  
								|  |  En línea | 
 
 An expert is a man who has made all the mistakes which can be made, in a very narrow field. |  |  |  | 
			| 
					
						| leogtz 
								. . .. ... ..... ........ ............. ..................... 
								Colaborador
								      Desconectado 
								Mensajes: 3.069
								
								 
								/^$/
								
								
								
								
								
								     | 
 
Si es code::block está en:Settings->compiler and debugger->linker settings
 |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| hackstyle18 
								
								 Desconectado 
								Mensajes: 14
								
								
								
								
								
								   | 
 
Gracias por todas vuestras respuestas    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::blocksgracias a todos , Saludos  |  
						| 
								|  |  
								| « Última modificación: 14 Julio 2010, 01:07 am por Eternal Idol » |  En línea | 
 
 |  |  |  |  |  
 
	
 
 
				
					
						| Mensajes similares |  
						|  | Asunto | Iniciado por | Respuestas | Vistas | Último mensaje |  
						|   |   | Realmente tengo que usar clases cuando puedo simplemente usar Querys? Java
 | Aikanáro Anário | 3 | 3,928 |  27 Noviembre 2011, 01:54 am por sapito169
 |  
						|   |   | Añadir sockets en winapi Programación C/C++
 | d00ze13 | 2 | 3,043 |  30 Noviembre 2011, 20:00 pm por d00ze13
 |  
						|   |   | Mi algoritmo para eliminar datos de un array (tengo que usar 5 arrays) Java
 | KaRaLLo | 2 | 5,344 |  27 Enero 2012, 08:36 am por bewa
 |  
						|   |   | Librerías sockets C++ Programación C/C++
 | Puntoinfinito | 1 | 2,188 |  8 Junio 2013, 16:17 pm por 0xDani
 |  
						|   |   | Herramientas Librerias a usar para desarrollar aplicacion consola avanzada Java
 | sk1pp3r | 1 | 4,520 |  17 Enero 2017, 20:05 pm por 0xFer
 |    |