我用socket 发送get 请求时,发现执行的速度有点慢,比如一分钟才执行几十次请求后来我改用多线程,发现情况并没有改善,用了五个线程,一分钟还是只能执行几十次geT 请求
有什么方法可以一分钟执行几百次这样的请求,谢谢了
代码如下
#include <iostream>
#include <string>
#include <vector>
#include <winsock2.h> 
#include <stdio.h>
#pragma comment(lib, "ws2_32.lib")int main(int argc,char* argv[]) 
{
    char server_name[256]="zhidao.baidu.com";     WSADATA wsaData;struct sockaddr_in srv_addr;if (WSAStartup(0x202,&wsaData)== SOCKET_ERROR) 
    { 
        WSACleanup();return-1; 
    }     SOCKET cli_sock=socket(PF_INET,SOCK_STREAM,0);
    if (cli_sock==INVALID_SOCKET)
        return-1;// connect to server 
    srv_addr.sin_family= AF_INET; 
    LPHOSTENT lphost= gethostbyname(server_name);
    if (lphost!= NULL) 
        srv_addr.sin_addr.s_addr= ((LPIN_ADDR)lphost->h_addr)->s_addr; 
    srv_addr.sin_port= ntohs(80);
    if (connect(cli_sock,(LPSOCKADDR)&srv_addr,sizeof(srv_addr))==SOCKET_ERROR)
    {
        return-1; 
    }
    //char sz[]="GET / HTTP/1.1\r\nHost:www.163.com\r\n\r\n";
    char sz[]="GET http://zhidao.baidu.com/question/94111357.html HTTP/1.0\r\nAccept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg\r\nAccept-Language: zh-cn\r\nUser-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; )\r\nHost: zhidao.baidu.com\r\n\r\n";
    int retval= send(cli_sock,sz,sizeof(sz),0);
    if( SOCKET_ERROR== retval )
        return 0;
    char buffer[50000+1]={0};
    int nTotal=0;
    while( SOCKET_ERROR!= retval ){ 
        retval= recv(cli_sock ,buffer+nTotal,50000,0);
        if (retval<=0)
        {
            break;
        }
        nTotal+=retval;
        
    } 
    closesocket(cli_sock);
    buffer[nTotal]=0;
    printf("%s\n",buffer); 
    system("pause");
    return 0;