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;
}
Incluye la librería winsock2:
#include <winsock2.h>
Si no funciona, postea el error de compilación.
Saludos
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 ===|
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.
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.
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.
No, el mismo tipo de error con estilo VC++:
Cliente.obj : error LNK2019: unresolved external symbol __imp__MessageBoxA@16 referenced in function _main
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
Si es code::block está en:
Settings->compiler and debugger->linker settings
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 ;)
De nadas ::)