版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
http协议解析
URL资源定位符 构成: 协议://域名/url路径
响应
#include <stdio.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <time.h>
#include <errno.h>
#include <signal.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/wait.h>
#include <sys/time.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#define SERVER_HOST "192.168.10.110"
#define SERVER_POST 6666
#define BUFFER_SIZE 4096
int main(int argc, char const *argv[])
{
int cfd,h,i;
int recbyte;
int sin_size;
char * buffer;
char * data = "qqCode=1443965173";
char * datalen;
struct sockaddr_in s_add;
fd_set set;
struct timeval tv;
printf("Hello,welcome to client!\r\n");
cfd = socket(AF_INET, SOCK_STREAM, 0);
if(-1 == cfd)
{
printf("socket fail ! \r\n");
return -1;
}
buffer = (char *)malloc(BUFFER_SIZE);
datalen = (char *)malloc(128);
memset(buffer,'\0',BUFFER_SIZE);
bzero(&s_add,sizeof(struct sockaddr_in));
int len = sizeof(data);
sprintf(datalen,"%d",len);
strcat(buffer,"POST /web/index HTTP/1.1\r\n");
strcat(buffer,"Host: 127.0.0.1:1111\r\n");
strcat(buffer,"Content-Type: application/w-www-for-urlencoded\r\n");
strcat(buffer,"Content-Length: ");
strcat(buffer,datalen);
strcat(buffer,"\r\n\r\n");
strcat(buffer,data);
strcat(buffer,"\r\n\r\n");
printf("%s\n",buffer);
s_add.sin_family=AF_INET;
s_add.sin_addr.s_addr= inet_addr(SERVER_HOST);
s_add.sin_port=htons(SERVER_POST);
if(-1 == connect(cfd,(struct sockaddr *)(&s_add), sizeof(struct sockaddr)))
{
printf("connect fail !\r\n");
return -1;
}
if(write(cfd,buffer,strlen(buffer))==-1)
{
printf("send failed!!\n");
return -1;
}
FD_ZERO(&set);
FD_SET(cfd, &set);
while(1)
{
sleep(1);
tv.tv_sec = 1;
tv.tv_usec = 0;
//h= select(cfd +1, &set, NULL, NULL, &tv);
h=1;
if(h<0){
printf("error\n");
break;
}else if(h==0){
printf("chaoshi \n");
}else if(h>0){
memset(buffer, 0, 4096);
i= read(cfd, buffer, 4095);
if (i<=0){
close(cfd);
printf("读取数据报文时发现远端关闭,该线程终止!\n");
return -1;
}else{
printf("%s\n", buffer);
}
}
}
close(cfd);
return 0;
}