1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
| #include <pthread.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <time.h>
#include <winsock2.h>
#pragma comment(lib, "ws2_32.lib")
#define NOMBRE 100
char genereip(int nombreip);
static void *task_a (void *p_data)
{
genereip(NOMBRE/2);
(void) p_data;
return NULL;
}
int main(int argc, char* argv[])
{
pthread_t ta;
pthread_create (&ta, NULL, task_a, NULL);
srand (time(NULL));
genereip(NOMBRE);
#if 1
pthread_join (ta, NULL);
#endif
system("PAUSE");
return 0;
}
char genereip(int nombreip)
{
int i;
for (i = 0 ; i < NOMBRE ; i++)
{
int max2 = 200;
int min2 = 100;
int nb;
nb=min2+(int) (rand() % (max2+1-min2));
char ip[12];
sprintf(ip,"192.168.1.%d",nb);
char out[] = " > NULL";
char commande [512];
strcpy(commande, "ping -n 1 ");
strcat(commande, ip);
strcat(commande, out);
int ret = system (commande);
if (ret==0)
{
printf("ip : %s => online !\n", ip);
/* Si je place ici du code qui travaille avec les sockets pour effectuer un test x ou y, je n'en vois le résultat que longtemps après exemple : */
int port = 80;
WSADATA WSAData;
WSAStartup(MAKEWORD(2,0), &WSAData);
SOCKET sock;
SOCKADDR_IN sin;
sock = socket(AF_INET, SOCK_STREAM, 0);
sin.sin_addr.s_addr = inet_addr(ip);
sin.sin_family = AF_INET;
sin.sin_port = htons(port);
if((connect(sock,(struct sockaddr*)&sin,sizeof(struct sockaddr))) == 0)
{
printf("Port %.d ouvert\n",port);
}
else
{
printf("Port %.d ferme\n",port);
}
}
else
{
printf("ip : %s => offline \n", ip);
}
}
} |
Partager