Scanner d'ip multithread

Soyez le premier à donner votre avis sur cette source.

Snippet vu 10 166 fois - Téléchargée 38 fois

Contenu du snippet

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 / Exemple :


#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

A voir également

Ajouter un commentaire

Commentaires

achil_ff
Messages postés
16
Date d'inscription
mercredi 28 décembre 2005
Statut
Membre
Dernière intervention
13 juin 2006

deslo comment on utilise ce scan port je veu dir l executio du prog
Jvan59
Messages postés
3
Date d'inscription
mardi 26 octobre 2004
Statut
Membre
Dernière intervention
25 février 2005

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
theXman
Messages postés
37
Date d'inscription
mardi 25 février 2003
Statut
Membre
Dernière intervention
11 mars 2006

intéressant

reste à rajouter les ports :)
abdoulax
Messages postés
875
Date d'inscription
samedi 17 mai 2003
Statut
Membre
Dernière intervention
22 juin 2012

Faudrai pi etre que j'ajoute un WaitForSingleObject pour les server inactif ....
cs_Kirua
Messages postés
3006
Date d'inscription
dimanche 14 avril 2002
Statut
Membre
Dernière intervention
31 décembre 2008

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 ^^.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.