⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 http_main.cc

📁 Unix 下的多线程下载程序 支持断点续传功能
💻 CC
字号:
#include "CSocket.h" 
#include <fstream> 
 
int main() 
{ 
	string word; 
	string filename; 
	string hostname; 
	int pos1 = 0; 
	int pos2 = 0; 
 
	cout << "enter the host name" << endl; 
	cin >> word; 
 
	//bulid the query for http 
	string quest = "GET "; 
	quest += word; 
	quest += " HTTP/1.0\r\n"; 
	quest += "User-agent:Mozilla/4.0\r\n"; 
	quest += "Accept-language:zh-cn\r\n\r\n"; 
 
	//get the hostname and filename from the word 
	string str_http = "http://"; 
	pos1 = word.find_first_of (str_http, 0); 
	pos2 = word.find_first_of ("/", pos1+7); 
	hostname = word.substr( pos1+7, pos2-pos1-7 ); 
	pos1 = word.find_last_of( "/", word.size() ); 
	filename = word.substr( pos1+1, word.size()-pos1-1 ); 
 
	cout << "filename: " << filename << endl; 
	cout << "hostname: " << hostname << endl; 
 
	//use the hostname and port 80 to connect 
	Sock_instance s_client( hostname, 80, CLIENT_TYPE ); 
	if( !s_client.Connect() ) 
	{ 
		cout << "connect error" << endl; 
		return -1; 
	} 
 
	//send the http query to the host 
	cout << "connect is ok!" << endl; 
	if( !s_client.Send(quest) ) 
	{ 
		cout << "send is error!" << endl; 
		return -1; 
	} 
 
	//recieve all the file from the hsot 
	while( s_client.Receive() > 0 ) 
	{ 
	} 
 
	//write the binary data which is recieved on the file 
	FILE *fp = fopen( filename.c_str(), "wb" ); 
	fwrite( s_client.data(), sizeof( unsigned char ), s_client.datalen(), fp ); 
	fclose( fp ); 
	return 0; 
} 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -