C用socket怎么post一个表单到一个网页?
来源:互联网 发布:航空发动机 知乎 编辑:程序博客网 时间:2024/06/05 17:51
#include<stdio.h>#include<string.h>
#include<stdlib.h>
#include<sys/socket.h>
#include<netinet/in.h>
char *post_req= "POST /myup/upload.php HTTP/1.1rn"
"Host: 192.168.1.180rn"
"Connection: keep-alivern"
"User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.25 Safari/532.0rn"
"Referer: http://192.168.1.180/myup/up.htmlrn"
"Content-Length: 1055012rn"
"Cache-Control: max-age=0rn"
"Origin: http://192.168.1.180rn"
"Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryy+u09GS0qCiv2NKfrn"
"Accept: application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5rn"
"Accept-Encoding: gzip,deflate,sdchrn"
"Accept-Language: zh-CN,zh;q=0.8rn"
"Accept-Charset: GBK,utf-8;q=0.7,*;q=0.3rn";
const char *data_boun_start = "----WebKitFormBoundaryy+u09GS0qCiv2NKfrn"; //
const char *data_boun_end = "----WebKitFormBoundaryy+u09GS0qCiv2NKf--";
const char *data_head = "Content-Disposition:form-data;name="upload_file";filename="tmp.dat"rn"; // +"rn" ??
#define req_len strlen(post_req)
#define dst_ip "192.168.1.180"
int main()
{
//packing data
// read data
FILE *fp = NULL;
int file_size = 0;
int res;
fp = fopen("tmp.dat", "r");
if(fp == NULL)
{
fprintf(stderr, "fopen error!n");
return -1;
}
fseek(fp, SEEK_SET, SEEK_END);
file_size = ftell(fp);
// printf("req_size: %dnfile_size:%dn", req_len, file_size/1024);
char data_buf[file_size];
// res = read(fp, data_buf, file_size);
res = fread(data_buf, 1, file_size, fp);
if(res < 0)
{
fprintf(stderr, "read error!n");
return -1;
}
char *buf = NULL;
int buf_size = 0;
buf_size = req_len + file_size + strlen(data_head) + 2*strlen(data_boun_start) ;
buf = (char *)malloc(buf_size);
if(buf == NULL)
{
fprintf(stderr, "malloc error!n");
return -1;
}
strcat(buf, post_req);
strcat(buf, data_boun_start);
strcat(buf, data_head);
strcat(buf, data_buf);
strcat(buf, data_boun_end);
int sockfd, bytes_read;
struct sockaddr_in dest;
if ( (sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0 )
{
printf("socket error!n");
return -1;
}
/*---Initialize server address/port struct---*/
bzero(&dest, sizeof(dest));
dest.sin_family = AF_INET;
dest.sin_port = htons(80); /*default HTTP Server port */
/*
if ( inet_addr("192.168.1.180", &dest.sin_addr.s_addr) == 0 )
{
printf("inet_addr error!n");
return -1;
}
*/
dest.sin_addr.s_addr = inet_addr(dst_ip);
/*---Connect to server---*/
if ( connect(sockfd, (struct sockaddr*)&dest, sizeof(dest)) != 0 )
{
printf("connect error!n");
}
if(send(sockfd, buf, buf_size, 0) < 0)
{
printf("send error!n");
return -1;
}
else
printf("send successfully...n");
return 0;
}
- C用socket怎么post一个表单到一个网页?
- 怎么post数据到一个网页
- 用Post方式抓取一个网页
- 用Post方式抓取一个网页
- 从一个网页传送表单到别一个网页时的中文处理问题
- js 创建一个post虚拟表单
- 用C++,调用浏览器打开一个网页
- 用C++,调用浏览器打开一个网页
- socket 怎么发送一个变量值
- C#怎么判断一个Socket是否连接
- C#怎么判断一个Socket是否连接
- C#怎么判断一个Socket是否连接
- C#怎么判断一个Socket是否连接
- 怎么做一个网页的播放器
- windows -- 怎么创建一个网页快捷方式
- HttpClient4 Post XML到一个服务器上
- HttpClient4 Post XML到一个服务器上
- HttpClient4 Post XML到一个服务器上
- Silverlight/WPF/WP7一周学习导读
- Silverlight/WPF/WP7一周学习导读
- 见或不见(非诚勿扰2插入的诗,感觉不错,跟大家分享)
- svn 更新时去除.settings文件
- 用隐式方法调用一个计算长方体表面积和体积的类
- C用socket怎么post一个表单到一个网页?
- JS数组
- 2 Perl - while控制结构
- 如何在Linux内核中为IPv6添加一种新的扩展头
- ARM-Linux中(BusyBox制作的文件系统)telnet服务器的配置和开启
- 手机、掌机显示芯片小对比
- [转载]On RArray AppendL() memory leaks
- Live Writer 插件
- 乐嘉老师送给男生女生的话