签到

05月06日
尚未签到

共有回帖数 0

    长街旧港00

    等级:
    希望能结识一些C语言的朋友

    给大家做一套 VC 编写下载器 的视频

    视频分为2部分
    1:服务端 实现下载 统计 开机启动
    2:生成器 界面编写 生成服务端.

    本节视频代码:
    #include "stdafx.h"
    #include stdlib.h
    #include WINSOCK2.h
    #pragma comment(lib,"WS2_32.LIB")


    BOOL Download(LPSTR szURL,LPSTR szSavePath)
    {

        WSADATA wsa;
        WSAStartup(MAKEWORD(2,2),&wsa);

        SOCKET m_Socket = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);

        SOCKADDR_IN m_Addr={NULL};

        m_Addr.sin_family = AF_INET;
        m_Addr.sin_port = htons(80);
        m_Addr.sin_addr.S_un.S_addr = inet_addr("192.168.1.100");


        if(connect(m_Socket,(SOCKADDR *)&m_Addr,sizeof(SOCKADDR))==SOCKET_ERROR)
        {
            closesocket(m_Socket);
            return FALSE;
        }

        CHAR szSendBuffer[]="GET /calc.exe HTTP/1.1rn"
                            "Host:192.168.1.100rn"
                            "Accept:*/*rn"
                            "User-Agent:Mozilla/4.0 (compatible; MSIE 5.00; Windows 98)rn"
                            "Connection:Keep-Alivern"
                            "rn";

        send(m_Socket,szSendBuffer,strlen(szSendBuffer),NULL);
       
        CHAR szRecvBuffer[1000]={NULL};
        WORD Size = sizeof(szRecvBuffer);

        ZeroMemory(szRecvBuffer,Size);

        WORD RecvLen = 0;
        RecvLen = recv(m_Socket,szRecvBuffer,Size,NULL);
       
        puts(szRecvBuffer);

        DWORD FileSize =0;
       
        CHAR *Point = strstr(szRecvBuffer,"Content-Length: ");
        Point+=strlen("Content-Length: ");

        FileSize = atoi(Point);

        WORD RevcHttpSize =0;

        for (WORD i=0;iRecvLen;i++)
        {
            if(szRecvBuffer=='r')
            {
                if(szRecvBuffer[i+1]=='n'&&szRecvBuffer[i+2]=='r'&&szRecvBuffer[i+3]=='n')
                    break;
            }
        }
        i+=4;

        DeleteFile(szSavePath);

        HANDLE m_Handle = CreateFile(szSavePath,GENERIC_WRITE,FILE_SHARE_WRITE,
            NULL,CREATE_NEW,FILE_ATTRIBUTE_NORMAL,NULL);

        DWORD Written =0;
        DWORD iCount = 0;

        WriteFile(m_Handle,&szRecvBuffer,RecvLen-i,&Written,NULL);
        iCount+=RecvLen -i;

        do
        {
           
            RecvLen = recv(m_Socket,szRecvBuffer,Size,NULL);
            iCount+=RecvLen;

            WriteFile(m_Handle,szRecvBuffer,RecvLen,&Written,NULL);

        } while (iCount  FileSize);

        closesocket(m_Socket);
        CloseHandle(m_Handle);

        puts("下载成功!");
        return TRUE;
    }

    int main(int argc, char* argv[])
    {
        Download(NULL,"c:\down.exe");

        return 0;
    }

    视频语音.
    下载地址 1楼发上来 上传中.



    http://u.115.com/file/f699961fba
    不知道百度吞不吞

    楼主 2016-03-31 14:20 回复

共有回帖数 0
  • 回 帖
  • 表情 图片 视频
  • 发表

登录直线网账号

Copyright © 2010~2015 直线网 版权所有,All Rights Reserved.沪ICP备10039589号 意见反馈 | 关于直线 | 版权声明 | 会员须知