#include <stdlib.h>
#include <unistd.h>
#include <curl/curl.h>
#include <curl/types.h>
#include <curl/easy.h>
#include <pthread.h>
#include <string.h>
struct bkinfo{
char url[1024];
char file[1024];
};
//struct bkinfo cu;
FILE *curlfp;
//這個函數是爲了符合CURLOPT_WRITEFUNCTION而構造的
//完成數據保存功能
size_t write_data(void *ptr, size_t size, size_t nmemb, void *stream)
{
//printf("************************\n%s\n",(char *)ptr);
//FILE *fp=(FILE *)stream;
if(*(char *)ptr=='N') { //空類型指針強制轉化成字符型
printf("null\n");
return;
}
int written = fwrite(ptr, size, nmemb, curlfp);
return written;
}
void libc_func(void *arg)
{
//struct bkinfo cu=(struct bkinfo)arg;
if((char*)arg==NULL)return;
char url[900],file[100];
char *p;
p=strstr((char*)arg,"\n");
if(p==NULL)return;
strncpy(url,(char*)arg,p-(char*)arg);
url[p-(char*)arg]='\0';
strcpy(file,p+1);
printf("OK:%s\n%s\n",url,file);
while(1){
printf("begin\n");
//printf("%s \n",(char*)arg);
CURL *curl;
curl_global_init(CURL_GLOBAL_ALL);
curl=curl_easy_init();
curl_easy_setopt(curl,CURLOPT_URL,url);
//FILE *fp; //定義FILE類型指針
if((curlfp=fopen(file,"w"))==NULL){
curl_easy_cleanup(curl);
return;
}
////CURLOPT_WRITEFUNCTION 將後繼的動作交給write_data函數處理
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);
curl_easy_perform(curl);
fclose(curlfp);
curl_easy_cleanup(curl);
printf("over\n");
sleep(6); //設置循環執行時間間隔
}
}
/*
void use_curl(struct bkinfo cu){
pthread_t lc;
int ret;
ret=pthread_create(&lc,NULL,(void *)libc,&cu);
while(ret!=0){
ret=pthread_create(&lc,NULL,(void *)libc,&cu);
//printf("create pthread error!\n");
return;
}
}*/
int main()
{
//三個可改變的值:IP 場所編號 和版本號
char bkurl[1000]="\0";
char ip_and_port[100]="\0"; //IP和端口號
char cscode[100]="\0"; //場所編號
char vernum[100]="\0"; //版本號
char filename[100]="\0";
strcpy(filename,"./curl.txt"); //存入的本地文件名
strcpy(ip_and_port,"192.168.3.50:8088");
strcpy(cscode,"123456");
strcpy(vernum,"12");
strcpy(bkurl,"http://");
strcat(bkurl,ip_and_port);
strcat(bkurl,"/iism2/newSetDeployAction.do?code=");
strcat(bkurl,cscode);
strcat(bkurl,"&vernum=");
strcat(bkurl,vernum);
strcat(bkurl,"\n");
strcat(bkurl,filename);
//printf("111 %s\n %s\n",bkurl,filename);
/*struct bkinfo cu;
strcpy(cu.url,bkurl);
strcpy(cu.file,filename);
printf("cu info: %s\n %s\n",cu.url,cu.file);*/
printf("here\n");
pthread_t lc;
int ret;
ret=pthread_create(&lc,NULL,(void *)libc_func,bkurl);
if(ret!=0){
printf("create pthread error!\n");
return;
}
pthread_join(lc,NULL);
return 0;
}
//gcc -o curl curl.c -lpthread -lcurl
//http://192.168.3.50:8088/iism2/newSetDeployAction.do?code=123456&vernum=12