为什么使用c写个socket连接web服务器报400,看了很多文章都是这个错

 

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <arpa/inet.h>
#include <signal.h>
#include <sys/wait.h>
#include <errno.h>
#include <iconv.h>

typedef long unsigned int  size_t;


#define nullptr NULL
#define BUFFER_SIZE 8192
#define HTTP_VERSION "HTTP/1.1"
#define CONNECTION_TYPE "Connection: close\r\n"
#define USER_AGENT "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.75 Safari/537.36"


/*

GET /?username=subwen%40qq.com&phone=11223344&email=11%40aa.com&date=2019-01-01&sex=male&class=3&rule=on HTTP/1.1
Host: 192.168.36.58:6789
Connection: keep-alive
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.75 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
Accept-Encoding: gzip, deflate
Accept-Language: zh,zh-CN;q=0.9,en;q=0.8

*/

int UTF8toGBK(char *inbuf, size_t inlen, char *outbuf, size_t outlen)
{
        iconv_t cd; 
         char **pin = &inbuf;
         char **pout = &outbuf;

        cd = iconv_open("gbk", "utf-8"); //gb2312
         if (0 == cd)
        return -1;
        if (-1 == iconv(cd, pin, &inlen, pout, &outlen))
         {
        iconv_close(cd);
         return -1;
         }

         iconv_close(cd);
         return 0;
}




int main(int argc, char const *argv[])
{
   // 1. 创建用于通信的套接字
    int fd = socket(AF_INET, SOCK_STREAM, 0);
    if(fd == -1)
    {
        perror("socket");
        exit(0);
    }

    // 2. 连接服务器
    struct sockaddr_in addr;
    addr.sin_family = AF_INET;  // ipv4
    addr.sin_port = htons(5057);   // 服务器监听的端口, 字节序应该是网络字节序
    //"127.0.0.1"
    inet_pton(AF_INET, "192.168.31.120", &addr.sin_addr.s_addr);
    int ret = connect(fd, (struct sockaddr*)&addr, sizeof(addr));
    if(ret == -1)
    {
        perror("connect");
        exit(0);
    }else if (ret == 0)
    {
       printf("connect to host!\r\n");

 

你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答

本次提问扣除的有问必答次数,将会以问答VIP体验卡(1次有问必答机会、商城购买实体图书享受95折优惠)的形式为您补发到账户。

​​​​因为有问必答VIP体验卡有效期仅有1天,您在需要使用的时候【私信】联系我,我会为您补发。