begin process at 2012 05 27 19:10:04
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Réseaux & Internet

 > SCANNER D'IP MULTITHREAD

SCANNER D'IP MULTITHREAD


 Information sur la source

Note :
1 / 10 - par 1 personne
1,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Réseaux & Internet Niveau :Débutant Date de création :14/12/2004 Vu :8 702

Auteur : abdoulax

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (8)
Ajouter un commentaire et/ou une note


 Description

Après une première tentative où je me suis fait incendier, j'ai repris tous les conseilles k'on m'avais donnée pour optimiser ma source. De plus je suis enfin en école d'info donc j'ai apris à mieux structurer mes programmes.

Dailleur en parlant de structure j'aurai aimé virer la variable globale int nthread mais c prise de tête pour poa grand chose. Il aurait fallut pointer sur l'entier et enregistrer l'address dans la structure config. Enfin bon...

Sinon j'espère k'il n'ya poa tro de truc maladroit !!!

Source

  • #include <winsock2.h>
  • #include <stdio.h>
  • #include <stdlib.h>
  • #pragma comment(lib, "ws2_32.lib")
  • struct config
  • {
  • SOCKET sock;
  • SOCKADDR_IN sin;
  • int ip;
  • HANDLE hthread;
  • };
  • int nthread;
  • DWORD WINAPI connection( LPVOID Param )
  • {
  • struct config * conf = (struct config *)Param;
  • WSADATA WSAData;
  • WSAStartup(MAKEWORD(2,0), &WSAData);
  • conf->sin.sin_addr.s_addr = ntohl(conf->ip);
  • conf->sin.sin_family = AF_INET;
  • conf->sin.sin_port = htons(555);
  • conf->sock = socket(AF_INET,SOCK_STREAM,0);
  • bind(conf->sock, (SOCKADDR *)&conf->sin, sizeof(conf->sin));
  • if ( !connect(conf->sock, (SOCKADDR *)&conf->sin, sizeof(conf->sin)) )
  • printf("***connection to %s succed\n",inet_ntoa(conf->sin.sin_addr));
  • nthread++;
  • closesocket(conf->sock);
  • WSACleanup();
  • CloseHandle(conf->hthread);
  • free(conf);
  • }
  • int main(int argc, char *argv[])
  • {
  • int startip;
  • int endip;
  • struct config * conf = NULL;
  • if ( argc > 2 )
  • {
  • startip = htonl(inet_addr(argv[1]));
  • endip = htonl(inet_addr(argv[2]));
  • nthread = 100;
  • for (;startip <= endip;startip++)
  • {
  • while ( !nthread ) _sleep(100);
  • conf = (struct config *) malloc(sizeof(struct config) );
  • conf->ip = startip;
  • conf->hthread = CreateThread(NULL, 0, &connection, conf, 0, 0);
  • nthread--;
  • }
  • }
  • else
  • printf("Usage : scan.exe ip_start ip_end\n");
  • system("pause");
  • return 0;
  • }
#include <winsock2.h>
#include <stdio.h>
#include <stdlib.h>
#pragma comment(lib, "ws2_32.lib")

struct config
{
 SOCKET sock;
 SOCKADDR_IN sin;
 int ip;
 HANDLE hthread;
};

int nthread;

DWORD WINAPI connection( LPVOID Param )
{
 struct config * conf = (struct config *)Param;
 WSADATA WSAData;
 WSAStartup(MAKEWORD(2,0), &WSAData);
 conf->sin.sin_addr.s_addr	= ntohl(conf->ip);
 conf->sin.sin_family		= AF_INET;
 conf->sin.sin_port		    = htons(555);
 conf->sock = socket(AF_INET,SOCK_STREAM,0);
 bind(conf->sock, (SOCKADDR *)&conf->sin, sizeof(conf->sin));
 if ( !connect(conf->sock, (SOCKADDR *)&conf->sin, sizeof(conf->sin)) )
     printf("***connection to %s succed\n",inet_ntoa(conf->sin.sin_addr));
 nthread++;
 closesocket(conf->sock);
 WSACleanup();
 CloseHandle(conf->hthread);
 free(conf);
}

int main(int argc, char *argv[])
{
 int startip;
 int endip;
 struct config * conf = NULL;

 if ( argc > 2 )
 {
  startip = htonl(inet_addr(argv[1]));
  endip = htonl(inet_addr(argv[2]));
  nthread = 100;

  for (;startip <= endip;startip++)
  {
   while ( !nthread ) _sleep(100);
   conf = (struct config *) malloc(sizeof(struct config) );
   conf->ip = startip;
   conf->hthread = CreateThread(NULL, 0, &connection, conf, 0, 0);
   nthread--;
  }
 }
 else
  printf("Usage : scan.exe ip_start ip_end\n");
 system("pause");
 return 0;
}

 Conclusion

By abdoulax

Have fun


 Sources du même auteur

CHARGER SON IPHONE À PARTIR DE LINUX VIA LE CÂBLE USB [LINUX...
Source avec Zip DLL POUR MIRC PERMETTANT D'INTERRAGIR AVEC DES FICHIERS DOS
IRC_BOT ( MON PREMIER PROGRAMME !!! )

 Sources de la même categorie

Source avec Zip Source avec une capture MINI SERVEUR HTTP [WINDOWS] par ganjarasta
Source avec Zip Source avec une capture CLIENT DE TEST MODBUS TCP par brunovan
Source avec Zip Source avec une capture SCANIP [ARP / ICMP] par ganjarasta
Source avec Zip Source avec une capture TRACEROUTE [WINPCAP] par ganjarasta
Source avec Zip SERVEUR MULTITHREAD [LINUX/WIN] par nipepsinicolas

Commentaires et avis

Commentaire de abdoulax le 14/12/2004 21:29:36

Pi etre que 100 thread c'est abusé, à mon avis 10 est largement suffisant.

Sinon je voulais savoir

CloseHandle(conf->hthread);
free(conf);

Es ce que en fermant le thread , l'instruction free(conf); s'execute ?? Car si ce n'est pas le cas, ceci pose un enorme problem de memoir. Et comment le résoudre ???

Have fun

Commentaire de BruNews le 14/12/2004 22:05:55 administrateur CS

CloseHandle(conf->hthread); ne fait que rendre ton handle invalide en le liberant de la table des handles, il ne ferme en rien le thread.

Commentaire de abdoulax le 15/12/2004 08:44:34

Dans ce k je pourrais liberer le handle au tout début de la fonction ???

Commentaire de Kirua le 15/12/2004 10:30:17

J'ai trouvé le code plutôt intéressant.

Pour ton histoire de nthread global, c'est pas bien grave. Si tu avais besoin de réutiliser ce code dans un programme plus large tu aurais encapsulé le tout dans une classe, auquel cas nthread aurait été une propriété de la classe: c'est propre ^^.

Commentaire de abdoulax le 16/12/2004 09:53:58

Faudrai pi etre que j'ajoute un WaitForSingleObject pour les server inactif ....

Commentaire de theXman le 21/12/2004 18:23:39

intéressant

reste à rajouter les ports :)

Commentaire de Jvan59 le 30/12/2004 00:14:22

moi ki debute grave, j'aimerais savoir ce k'est un handle ??
j'utilise une classe pour ecrire sur un port série é utilise ossi le fameux HANDLE ?????????

merci de m'aider !

JVAN59@wanadoo.fr

Commentaire de achil_ff le 13/06/2006 14:40:52

deslo comment on utilise ce scan port je veu dir l executio du prog

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,374 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales