void Requester::run() { unsigned iter = 0; while (1) { if (crawler->get_site_que()->size() <= iter) break; Site *site = (*crawler->get_site_que())[iter]; Socketpool *socketpool = new Socketpool(SOCKETNUM, site->get_host()); while (1) { string url = site->pop_url(); if (url.length() == 0) //这个队列已经完了 break; site->push_fetched(url); Net *net = socketpool->get_idle_socket(); net->link(); http_requester(net, url); cout << "send request " + url << endl; //if (post_ok == -1) //{ //net->link(); //http_requester(net, url); //} struct epoll_event ev; ev.events = EPOLLIN; Epoll_ptr *ptr = new Epoll_ptr(); ptr->net = net; ptr->url = url; ptr->socketpool = socketpool; ev.data.ptr = ptr; epoll_ctl(crawler->get_epollfd(), EPOLL_CTL_ADD, net->get_sockfd(), &ev); cout << "sockfd = " << net->get_sockfd() << endl; } iter++; } }