📄 sm_pic_down.c
字号:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
/*******socket header******/
#include <sys/socket.h>
#include <net/if.h>
#include <netdb.h>
#include <netinet/in.h>
#include <net/if_arp.h>
/*************************/
#include "ConfigInfo.h"
#include "SmBsString.h"
//#include "webcomm.h"
#include "Vcrc.h"
extern char* host2ip(char * host);
void Pack_Req_Header(char sendmsgbuf[],char appth[],char servip[]);
/*convert host name to ip address*/
char* host2ip(char *host,char *address)
{
char *ptr,**pptr;
struct hostent *hptr;
char str[32];
ptr = host;
address=malloc(20);
/*call gethostbyname(),get hostent struct*/
/*struct hostent{
char *h_name; //主机名
char **h_alias; //主机别名列表
int h_addrtype; //主机地址类型
int h_length; //主机地址长度
char **h_addr_list;//主机IP地址列表
}*/
if( (hptr = gethostbyname(ptr) ) == NULL )
{
printf("gethostbyname error for host:%s\n", ptr);
return (char*)NULL;
}
for(pptr = hptr->h_aliases; *pptr != NULL; pptr++) ;
switch(hptr->h_addrtype)
{
case AF_INET:
pptr=hptr->h_addr_list;
for(;*pptr!=NULL;pptr++)
sprintf(address,"%s", inet_ntop(hptr->h_addrtype, *pptr, str, sizeof(str)));
break;
default:
printf("unknown address type\n");
break;
}
return address;
}
/*调用该函数从服务器返回的信息头中取得下载文件的长度*************************
*eg:
** HTTP/1.1 200 OK *************
** Via:1.1 FILESERVER
** Cnnection:Keep-Alive *************
** Proxy-Connection:Keep-Alive
** Content-Length:4355680 //文件长度,通过子串Content-Length:和:/r/n取中间
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -