SCANNER IP EN C MULTITHREAD

bobijoe Messages postés 13 Date d'inscription dimanche 28 septembre 2003 Statut Membre Dernière intervention 13 juin 2006 - 11 oct. 2005 à 20:55
cs_bloom1 Messages postés 328 Date d'inscription jeudi 26 août 2004 Statut Membre Dernière intervention 8 mars 2007 - 26 août 2006 à 21:05
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/34161-scanner-ip-en-c-multithread

cs_bloom1 Messages postés 328 Date d'inscription jeudi 26 août 2004 Statut Membre Dernière intervention 8 mars 2007
26 août 2006 à 21:05
SMS :(
RM50Man Messages postés 314 Date d'inscription mercredi 1 novembre 2000 Statut Membre Dernière intervention 20 août 2006
14 juin 2006 à 00:06
Non il faut ajouter dans des liens
../../../../../wxDev-Cpp/lib/libws2_32.a
bobijoe Messages postés 13 Date d'inscription dimanche 28 septembre 2003 Statut Membre Dernière intervention 13 juin 2006
13 juin 2006 à 18:39
Tu prends le code source du site tel quel, tu ouvres le fichier .dev avec Dev-cpp :
-> Ensuite tu cliques sur "Projet", "Paramètres"
-> Cliques sur "Ajouter fichier"
-> Supprimes tous les fichiers dans "Edition de liens"
-> Ajoutes le fichier "C:/Dev-Cpp/lib/libws2_32.a"
-> OK

Y a plus qu'à compiler...

++
achil_ff Messages postés 16 Date d'inscription mercredi 28 décembre 2005 Statut Membre Dernière intervention 13 juin 2006
13 juin 2006 à 14:04
je m excuse j ai fai tt ce ke vous m avez di mais tjrs les mm erruers, j ai vraimen besoin de ce brogramme au plus tard dem1 donc si vous pouvez m eclercir mieu.
si vs avez ce prog entier je vs prie de l envoyer ds ma boite email :
achil_1@hotmail.com
c est tres tres tres urge
merci
RM50Man Messages postés 314 Date d'inscription mercredi 1 novembre 2000 Statut Membre Dernière intervention 20 août 2006
12 juin 2006 à 14:19
TU vas dans projet , option du projet, et tu ajoutes la librairie ws2_32.a(c'est pê pas exactement ce nom mais tu cherches) qui est ds le dossier lib de devcpp
bobijoe Messages postés 13 Date d'inscription dimanche 28 septembre 2003 Statut Membre Dernière intervention 13 juin 2006
12 juin 2006 à 13:19
Verifie que tu as bien les lignes suivantes au debut de ton code :
#include <winsock2.h> // Sockets windows
#pragma comment(lib, "ws2_32.lib") // Librairie winsock2

Je pense que ton problème est tout simplement dû à une mauvaise inclusion de librairie...

Bonne chance,

++
achil_ff Messages postés 16 Date d'inscription mercredi 28 décembre 2005 Statut Membre Dernière intervention 13 juin 2006
12 juin 2006 à 01:49
voici les erreur ki me donne
Compiler: Default compiler
Building Makefile: "C:\Documents and Settings\simo\Mes documents\pr_c\Makefile.win"
Executing make...
make.exe -f "C:\Documents and Settings\simo\Mes documents\pr_c\Makefile.win" all
gcc.exe main.o -o "ScannerIp.exe" -L"C:/Dev-Cpp/lib" -mwindows

main.o(.text+0x2245):main.c: undefined reference to `WSAStartup@8'
main.o(.text+0x2264):main.c: undefined reference to `socket@12'
main.o(.text+0x2277):main.c: undefined reference to `inet_addr@4'
main.o(.text+0x2298):main.c: undefined reference to `htons@4'
main.o(.text+0x22be):main.c: undefined reference to `connect@12'
main.o(.text+0x234f):main.c: undefined reference to `WSAStartup@8'
main.o(.text+0x236e):main.c: undefined reference to `socket@12'
main.o(.text+0x2382):main.c: undefined reference to `inet_addr@4'
main.o(.text+0x23a1):main.c: undefined reference to `htons@4'
main.o(.text+0x23c7):main.c: undefined reference to `connect@12'
collect2: ld returned 1 exit status

make.exe: *** [ScannerIp.exe] Error 1

Execution terminated
achil_ff Messages postés 16 Date d'inscription mercredi 28 décembre 2005 Statut Membre Dernière intervention 13 juin 2006
12 juin 2006 à 01:12
voici les erreur ki me donne
Compiler: Default compiler
Building Makefile: "C:\Documents and Settings\simo\Mes documents\pr_c\Makefile.win"
Executing make...
make.exe -f "C:\Documents and Settings\simo\Mes documents\pr_c\Makefile.win" all
gcc.exe main.o -o "ScannerIp.exe" -L"C:/Dev-Cpp/lib" -mwindows

main.o(.text+0x2245):main.c: undefined reference to `WSAStartup@8'
main.o(.text+0x2264):main.c: undefined reference to `socket@12'
main.o(.text+0x2277):main.c: undefined reference to `inet_addr@4'
main.o(.text+0x2298):main.c: undefined reference to `htons@4'
main.o(.text+0x22be):main.c: undefined reference to `connect@12'
main.o(.text+0x234f):main.c: undefined reference to `WSAStartup@8'
main.o(.text+0x236e):main.c: undefined reference to `socket@12'
main.o(.text+0x2382):main.c: undefined reference to `inet_addr@4'
main.o(.text+0x23a1):main.c: undefined reference to `htons@4'
main.o(.text+0x23c7):main.c: undefined reference to `connect@12'
collect2: ld returned 1 exit status

make.exe: *** [ScannerIp.exe] Error 1

Execution terminated
achil_ff Messages postés 16 Date d'inscription mercredi 28 décembre 2005 Statut Membre Dernière intervention 13 juin 2006
12 juin 2006 à 00:24
j ai fai le truc mais il me donne un ta d erreur de limk
ke fair??????
achil_ff Messages postés 16 Date d'inscription mercredi 28 décembre 2005 Statut Membre Dernière intervention 13 juin 2006
12 juin 2006 à 00:16
stp sauve moi
achil_ff Messages postés 16 Date d'inscription mercredi 28 décembre 2005 Statut Membre Dernière intervention 13 juin 2006
11 juin 2006 à 23:50
je te di les etapes ke j ai fai :
j ai crere un projet windows c puis j ai fai le contenu du fich main ds celui du projet
apres jai complier
il m a donner un tat d erreur et j ai pas trouver la winsock32.a
je l atrouve ou??
RM50Man Messages postés 314 Date d'inscription mercredi 1 novembre 2000 Statut Membre Dernière intervention 20 août 2006
11 juin 2006 à 23:47
oui
achil_ff Messages postés 16 Date d'inscription mercredi 28 décembre 2005 Statut Membre Dernière intervention 13 juin 2006
11 juin 2006 à 23:45
je crer kel type de projet , windowsaplication ou koi??
RM50Man Messages postés 314 Date d'inscription mercredi 1 novembre 2000 Statut Membre Dernière intervention 20 août 2006
11 juin 2006 à 23:35
tu recrées un projet, ensuite tu copies le code source du scannerip, puis tu le recolles dans le main.c du nouveau projet, et tu compiles, et tu rajoutes la librairie au projet le fichier winsock32.a(un truc comme ca) tu regardes ds le dossier lib de devcpp, puis tu compiles.
achil_ff Messages postés 16 Date d'inscription mercredi 28 décembre 2005 Statut Membre Dernière intervention 13 juin 2006
11 juin 2006 à 23:31
je l ai fai
k elle sont less etaps svp c est tres urg
RM50Man Messages postés 314 Date d'inscription mercredi 1 novembre 2000 Statut Membre Dernière intervention 20 août 2006
11 juin 2006 à 23:05
Tu recrées un projet.
achil_ff Messages postés 16 Date d'inscription mercredi 28 décembre 2005 Statut Membre Dernière intervention 13 juin 2006
11 juin 2006 à 19:28
voici l erreur k il me donne buikd error scanner.exe error1
achil_ff Messages postés 16 Date d'inscription mercredi 28 décembre 2005 Statut Membre Dernière intervention 13 juin 2006
11 juin 2006 à 19:23
desoler pour le derangement mais je compile ce programme mais je trouve plusieurs erreurs est ce c est mon compilateur?? j ai vraiment tres besoin de ce prog SVP
RM50Man Messages postés 314 Date d'inscription mercredi 1 novembre 2000 Statut Membre Dernière intervention 20 août 2006
4 juin 2006 à 12:36
Devc++
achil_ff Messages postés 16 Date d'inscription mercredi 28 décembre 2005 Statut Membre Dernière intervention 13 juin 2006
2 juin 2006 à 00:22
je m excuse, pouriez vous me dir avec koi se compile ce programme?? kel logiciel SVP c est urgents
stef2004 Messages postés 105 Date d'inscription mercredi 4 février 2004 Statut Membre Dernière intervention 29 décembre 2005
12 oct. 2005 à 13:17
je tiens juste a dire que quand on veut, on peut :))))
il existe un patch pr le SP2 avec le quel on peut modifier le nombre de thread maximum par appli.
Sinon bravo pour la source javais dejà vu ca, mais en VB
a+
stef
RM50Man Messages postés 314 Date d'inscription mercredi 1 novembre 2000 Statut Membre Dernière intervention 20 août 2006
11 oct. 2005 à 21:26
Et oui un moment, je me demandais pourquoi ca bloquer tous les 10 threads!!!!!!
Tu peux regler le nombre de Thread avant de faire une pause , si tu clic sur pause tu choisis le tps de pause et le nb de threads.
Si on le règles , il marche bien faut juste l'adapter a sa machine!!!
Merci pour tes conseils!!!!
bobijoe Messages postés 13 Date d'inscription dimanche 28 septembre 2003 Statut Membre Dernière intervention 13 juin 2006
11 oct. 2005 à 20:55
Sur XP SP2 tu auras des problemes si tu lances 1000 threads car seulement 10 connexions pendantes (en attente d'établissement) sont autorisées par application.

Tu peux utiliser un sémaphore à compte et réduire le timeout de connexion pour régler le problème si ça t'interesse ;-).

Un bout de code plutôt efficace pour faire un timeout sur un connect() :

/*
* @brief Etablie une connection en mode non bloquant.
* @param sock Socket a utiliser pour faire la connexion.
* @param sin Informations sur la socket.
* @retval true Connexion etablie.
* @retval false Echec de connexion.
*/
bool ConnectWithTimeOut(SOCKET * sock , SOCKADDR_IN * sin)
{
unsigned int connectTimeOut = 4000; // 4s
bool connected = false;

//Passage de la socket en mode non bloquant
unsigned long optVal=1;
ioctlsocket(*sock,FIONBIO,&optVal);

//Nombre de tentatives
unsigned int nbAttempts = 0;

//Temps au debut de la connexion
clock_t tempsAvant = clock();

//Demande de connexion
connect(*sock, (SOCKADDR *)sin, sizeof(*sin));

//On attent la connexion
fd_set socketToCheck;
socketToCheck.fd_count = 1; //Nombre de socket a valider
socketToCheck.fd_array[0] = *sock; //socket a tester
timeval tempo;
tempo.tv_sec = connectTimeOut / 1000; //en s
tempo.tv_usec = connectTimeOut; //en ms
int codeRetour = select(0,NULL,&socketToCheck,&socketToCheck,&tempo);

//Si la socket est valide et aucune erreur de reseau
if ((codeRetour != 0) && (codeRetour != SOCKET_ERROR)) {
connected = true;

//on repasse en mode bloquant
optVal = 0;
ioctlsocket (*sock, FIONBIO, &optVal);
}

return connected;
}

Oublie pas de fermer les sockets et de faire un WSACleanup dans les threads...

++ et bon dev ;-)
Rejoignez-nous