c语言post请求,C语言实现HTTP的GET和POST请求

HTTP是基于IP/TCP加上了网络请求的固定格式, 比如:

method

URL

Content-host

Content-Type

Content-Length

实现GET请求

把组合成的数据按照固定的格式发送给服务器, 服务器解析相应的格式, 然后返回服务器数据:

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define IPSTR "42.121.252.58" //服务器IP地址;

#define PORT 80

#define BUFSIZE 1024

int main(int argc, char **argv)

{

int sockfd, ret, i, h;

struct sockaddr_in servaddr;

char str1[4096], str2[4096], buf[BUFSIZE], *str;

socklen_t len;

fd_set t_set1;

struct timeval tv;

//创建套接字

if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0 ) {

printf("创建网络连接失败,本线程即将终止---socket error!\n");

exit(0);

};

bzero(&servaddr, sizeof(servaddr));

servaddr.sin_family = AF_INET;

servaddr.sin_port = htons(PORT);

if (inet_pton(AF_INET, IPSTR, &servaddr.sin_addr) <= 0 ){

printf("创建网络连接失败,本线程即将终止--inet_pton error!\n");

exit(0);

};

if (connect(sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr)) < 0){

printf("连接到服务器失败,connect error!\n");

exit(0);

}

printf("与远端建立了连接\n");

memset(str2, 0, 4096);

strcat(str2, "theDataToPost");

str=(char *)malloc(128);

len = strlen(str2);

sprintf(str, "%d", len);

memset(str1, 0, 4096);

strcat(str1, "GET /ymnets/p/6255674.html HTTP/1.1\n");

strcat(str1, "Host: www.cnblogs.com\n");

strcat(str1, "Content-Type: text/html\n");

strcat(str1, "Content-Length: ");

strcat(str1, str);

strcat(str1, "\n\n");

strcat(str1, str2);

strcat(str1, "\r\n\r\n");

printf("%s\n",str1);

ret = write(sockfd,str1,strlen(str1));

你可能感兴趣的:(c语言post请求)