这段时间在学习网络编程,想到怎么用c实现一个通过url的方式下载资源的小程序。
第一步:对URL进行解析获取其主机名称端口号及资源路径和资源名称等信息。
第二步:用gethostbyname的函数获取其IP来进行socket连接。
第三步:发送请求即send函数发出你的请求GET
第四步:获得http相应报文和数据
第五步:提取出其中的相应报文并保存对应的资源到本地。
下午思考怎么分离相应报文和数据思考了n久最后借鉴网友的帮助了解到直接对其进行解析就好。
一下附上代码。此处略去第一步第二步。
#include<sys/socket.h>
#include"myerr.h"
#include<netdb.h>
#include<iostream>
#include<fstream>
#include"unp.h"
#define SA struct sockaddr
using namespace std;
typedef struct{
char line[256];
char head[256];
char body[256];
}message;
void getCon(char *Ip)
{
int sockfd,num;
message req;
char sndBuf[1024], rcvBuf[1024];
sockfd = socket(AF_INET,SOCK_STREAM,0);
struct sockaddr_in servaddr;
bzero(&servaddr,sizeof(servaddr));
servaddr.sin_family=AF_INET;
servaddr.sin_port=htons(80);
inet_pton(AF_INE