用Socket实现我找了一个有dll,看不懂请帮忙写一个吗,越简单越好,十分感谢,分不够再加

解决方案 »

  1.   


    CSocket skt;
    skt.Create(); CString tmp;
    char* buffer=new char[4096];
    int n;
    CString http,html; http="GET / HTTP/1.1\r\n";
    http+="Host: 119.75.213.61\r\n";
    http+="Accept: */*\r\n";
    http+="\r\n\r\n"; n=http.GetLength(); while(1)
    {
    if(!skt.Connect("119.75.213.61",80))break;
    if(skt.Send(http.GetBuffer(),n)<n)break;
    html="";
    while((n=skt.Receive(buffer,4000))>0)
    {
    buffer[n]=0;
    tmp.Format("%s",buffer);
    html+=tmp;
    if(html.Find("</HTML>")>0)break;
    }
            }
      

  2.   

    我试了一下楼上的代码,没错误,但是
    if(!skt.Connect("119.75.213.61",80))break;
    这句就是过不去,连接不上哎
      

  3.   


    #include <stdio.h> 
    #include <winsock.h> 
    #include <string.h> 
    #pragma comment(lib, "ws2_32.lib") void geturl(char *url) 

    WSADATA WSAData={0}; 
    SOCKET sockfd; 
    struct sockaddr_in addr; 
    struct hostent *pURL; 
    char myurl[BUFSIZ]; 
    char *pHost = 0, *pGET = 0; 
    char host[BUFSIZ], GET[BUFSIZ]; 
    char header[BUFSIZ] = ""; 
    static char text[BUFSIZ]; 
    int i; /* 
     * windows下使用socket必须用WSAStartup初始化,否则不能调用 
     */ 
    if(WSAStartup(MAKEWORD(2,2), &WSAData)) 

    printf("WSA failed\n"); 
    return; 
    } /* 
     * 分离url中的主机地址和相对路径 
     */ 
    strcpy(myurl, url); 
    for (pHost = myurl; *pHost != '/' && *pHost != '\0'; ++pHost); 
    if ( (int)(pHost - myurl) == strlen(myurl) ) 
    strcpy(GET, "/"); 
    else 
    strcpy(GET, pHost); 
    *pHost = '\0'; 
    strcpy(host, myurl); 
    printf("%s\n%s\n", host, GET); /* 
     * 设定socket参数,并未真正初始化 
     */ 
    sockfd = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP); 
    pURL = gethostbyname(host); 
    addr.sin_family = AF_INET; 
    addr.sin_addr.s_addr = *((unsigned long*)pURL->h_addr); 
    addr.sin_port = htons(80); /* 
     * 组织发送到web服务器的信息 
     * 为何要发送下面的信息请参考HTTP协议的约定 
     */ 
    strcat(header, "GET "); 
    strcat(header, GET); 
    strcat(header, " HTTP/1.1\r\n"); 
    strcat(header, "HOST: "); 
    strcat(header, host); 
    strcat(header, "\r\nConnection: Close\r\n\r\n"); /* 
     * 连接到服务器,发送请求header,并接受反馈(即网页源代码) 
     */ 
    connect(sockfd,(SOCKADDR *)&addr,sizeof(addr)); send(sockfd, header, strlen(header), 0); while ( recv(sockfd, text, BUFSIZ, 0) > 0) 

    printf("%s", text); 
    strnset(text, '\0', BUFSIZ); 
    } closesocket(sockfd); WSACleanup(); 
    } int main() 

    char url[256]; 
    printf("http://"); 
    scanf("%s", url); 
    geturl(url); 
    return 0; 
    }
      

  4.   

    http协议是典型的短连接应用
    你用哪个socket发送http请求,服务器就会往哪个socket回复html数据,并close你应该弄个定时器,每两分钟创建一个子线程,将创建socket、连接、发送、接收、关闭这一连串操作全部放进子线程,子线程最后将结果PostMessage到主线程主线程只需要两个消息响应函数,一个处理定时器,一个处理子线程Post出来的数据