Пардон,вот код:
#include<sys/socket.h>
#include<sys/types.h>
#include<resolv.h>
#include<stdio.h>
#include<errno.h>
#include<glib.h>
#include<pthread.h>
#include<signal.h>
#define PROCNUM 30
GList* ips; // список ip-шников
void generate_ips()
{
int i;
for(i=1;i<255;i++)
ips=g_list_append(ips,g_strdup_printf("192.168.22.%d",i));
}
void* try_ip(void* ip)
{
int sock;
struct sockaddr_in server;
memset(&server,sizeof(server),0);
server.sin_family=AF_INET;
server.sin_port=htons(139);
server.sin_port=htons(139);
inet_aton(ip,&server.sin_addr);
sock=socket(PF_INET,SOCK_STREAM,0);
if(sock<0){
printf("error %d while creating socket!\n",errno);
exit(1);
}
if(connect(sock,&server,sizeof(server))==0){
printf("==>%s\n",ip);
close(sock);
}
raise(SIGCHLD);
return NULL;
}
void on_child_exited(int sig)
{
if(ips)
{
pthread_t child; if((pthread_create(&child,NULL,&try_ip,(void*)(ips->data)))!=0){
printf("error creating thread!\n");
}
ips=ips->next;
}
}
int main(int argc,char* argv[])
{
int ips_in_scan=0;
struct sigaction act;
memset(&act,sizeof(act),0);
act.sa_handler=on_child_exited;
act.sa_flags=SA_NOMASK | SA_RESTART; //не уверен с флагами
sigaction(SIGCHLD,&act,0);
generate_ips();
for(;ips,ips_in_scan<PROCNUM;ips=ips->next,ips_in_scan++)
{
pthread_t child;
if((pthread_create(&child,NULL,&try_ip,(void*)(ips->data)))!=0)
{
printf("error creating thread!\n");
}
}
sleep(100);
return 0;
}
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Помогите разобраться с потоками (2003)
- Форум Клиент-сервер (консольный чат) на сокетах (2017)
- Форум Помогите разобраться с sendto (2014)
- Форум [C] Получить данные на TCP сокет (2008)
- Форум [pthread][c][socket] recvfrom возвращает «bad file descriptor». (2011)
- Форум Помогите разобраться с сигналами (2003)
- Форум Уничтожение дочернего процесса (2004)
- Форум потоки и сигналы. (2005)
- Форум Завершение потока: остается занятая память. (2009)
- Форум Не понимаю почему не работает (2013)