Besoin d'un peu d'aide pour un socket

NAVIE Messages postés 23 Date d'inscription samedi 1 janvier 2005 Statut Membre Dernière intervention 23 avril 2006 - 25 févr. 2005 à 17:59
NAVIE Messages postés 23 Date d'inscription samedi 1 janvier 2005 Statut Membre Dernière intervention 23 avril 2006 - 25 févr. 2005 à 19:58
Bonjour je demande de l'aide au sujet d'un programme qui ne fonctionne pas hélas , que j'ai crée en C++ avec le compilateur Dev-C++ Version 4.9.8.10 .

En voici le code:

#include
#include <winsock2.h>
#pragma comment(lib,"w32_32.lib")
#include <stdio.h>


int main(){
char Buffer[1024];
WSADATA WSAData;
if((WSAStartup(0x0202, &WSAData))!=0)
{
printf("[-]WSAStartup Erreur:%d\n",WSAGetLastError());
return -1;
}


HOSTENT * Hote;
if((Hote = gethostbyname("??une adresse??"))==NULL)
{
printf("[-]Erreur: Résolution de l'hote impossible.");
return -1;
}


SOCKET W_IP;


if((W_IP = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP))==-1)
{
printf("[-]Erreur: Résolution de créer le socket.");
return -1;
}


IN_ADDR Adresse;
SOCKADDR_IN SockAddrIn;
memcpy(&Adresse, Hote -> h_addr, Hote -> h_length);
SockAddrIn.sin_family = AF_INET;
SockAddrIn.sin_port = htons(6667);
SockAddrIn.sin_addr = Adresse;

if((connect(W_IP, (SOCKADDR *)&SockAddrIn, sizeof(SockAddrIn)))!=0)
{
printf("[-]Impossible de se connecter.");
return -1;
}


recv(W_IP, Buffer, sizeof(Buffer), 0);
printf("%d",Buffer);

closesocket(W_IP);
WSACleanup();
return 0;
}

Cependant mon compilateur m'affiche en bas:

[Linker error] undefined reference to
[mailto:`WSAStartup@8' `WSAStartup@8'
]
[Linker error] undefined reference to
[mailto:`WSAGetLastError@0' `WSAGetLastError@0'
]
[Linker error] undefined reference to
[mailto:`gethostbyname@4' `gethostbyname@4'
]
[Linker error] undefined reference to
[mailto:`socket@12' `socket@12'
]
[Linker error] undefined reference to
[mailto:`htons@4' `htons@4'
]
[Linker error] undefined reference to
[mailto:`connect@12' `connect@12'
]
[Linker error] undefined reference to
[mailto:`recv@16' `recv@16'
]
[Linker error] undefined reference to
[mailto:`closesocket@4' `closesocket@4'
]
[Linker error] undefined reference to
[mailto:`WSACleanup@0' `WSACleanup@0'
]
C:\PROGRAMME CODE C++\test\Makefile.win [Build Error] [Projet1.exe] Error 1

Merci d'avance à qui compte me répondra pour m'aider

NAVI

6 réponses

simtiers Messages postés 207 Date d'inscription jeudi 3 avril 2003 Statut Membre Dernière intervention 2 novembre 2006
25 févr. 2005 à 18:20
Plutot que

#pragma comment....



va dans les options du projet => cherche les options du linker

marque :

-lws2_32.lib



Là, ça devrait aller
0
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
25 févr. 2005 à 18:42
la lib s'appelle "libws2_32.a" sous dev-cpp.
d'une manière générale la correspondance des libs entre VC et dev-cpp est :
xx.lib <> libxx.a
0
simtiers Messages postés 207 Date d'inscription jeudi 3 avril 2003 Statut Membre Dernière intervention 2 novembre 2006
25 févr. 2005 à 18:48
Le fait d'utiliser -lnomdelalib est une forme plus pratique



Exemple : fichier libws2_32.a



=> écrire - ("tiret") l (lettre L) ws2_32 ("nom du fichier sans "lib" ni ".a")



=> évite qq erreurs



Par contre, ta remarque est juste si on utilise le pragma comment( lib,"..." )
0
NAVIE Messages postés 23 Date d'inscription samedi 1 janvier 2005 Statut Membre Dernière intervention 23 avril 2006
25 févr. 2005 à 18:48
"les options du linker"???

qu'est-ce??
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
simtiers Messages postés 207 Date d'inscription jeudi 3 avril 2003 Statut Membre Dernière intervention 2 novembre 2006
25 févr. 2005 à 18:54
C'est dans les options du projet, dans l'onglet où tu as 3 zones de texte (je ne rappelle plus du nom exacte)



La partie du milieu sert d'options au compilateur C++ (définition de
variables de compilation comme UNICODE ou autre) et celle de droite
sert à indiquer les options du linker (passage du code compilé en .o à
un fichier en .exe, .dll ...)



Dans cette zone, tape :

-lws2_32



(fait un copier/coller si tu veux pas faire de fautes de frappe lol)
0
NAVIE Messages postés 23 Date d'inscription samedi 1 janvier 2005 Statut Membre Dernière intervention 23 avril 2006
25 févr. 2005 à 19:58
Merci simtiers .
Maintenant mon système marche mais il me reste quelques modifications a faire.

J'en reparlerao plus tard si j'ai des ennuis.

A++ et encore merci

NAVI
0
Rejoignez-nous