c - 发送原始 http header

标签 c http sockets request response

我有以下原始 HTTP 请求:

GET http://www.google.ie/ HTTP/1.1
Host: www.google.ie
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:5.0) Gecko/20100101 Firefox/5.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encod...

我正在尝试从我的本地主机发送此信息。有人能指出我如何在 C 或 C++ 中执行此操作的正确方向吗?

我目前正在研究套接字,但它并没有真正起作用。

   int sockfdi, portnoi, ni;
   struct sockaddr_in serv_addri;
   struct hostent *serveri;
   portnoi =80;

   sockfdi = socket(AF_INET, SOCK_STREAM, 0);
   if (sockfdi < 0){
        error("***ERROR opening socket");
   }
   serveri = gethostbyname("172.16.1.218");
   if (serveri == NULL){
       fprintf(stderr,"***ERROR, no such host\n");
       exit(0);
   }

   bzero((char *) &serv_addri, sizeof(serv_addri));
   serv_addri.sin_family = AF_INET;
   bcopy((char *)serveri->h_addr, (char *)&serv_addri.sin_addr.s_addr, serveri->h_length);
   serv_addri.sin_port = htons(portnoi);
   if (connect(sockfdi,(struct sockaddr *) &serv_addri,sizeof(serv_addri)) < 0){
       error("***ERROR connecting");
   }
   printf("Please enter the message: ");
   bzero(buffer,256);

最佳答案

您可以尝试使用 libcurl而不是套接字:

#include <stdio.h>
#include <curl/curl.h>

int main(void)
{
  CURL *curl;
  CURLcode res;
  struct curl_slist *headers = NULL;

  curl = curl_easy_init();
  if(curl) {
    headers = curl_slist_append(headers, "Host: www.google.ie");
    headers = curl_slist_append(headers, "User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:5.0) Gecko/20100101 Firefox/5.0");
    headers = curl_slist_append(headers, "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
    headers = curl_slist_append(headers, "Accept-Language: en-us,en;q=0.5");
    /* Add more headers here */
    curl_easy_setopt(curl, CURLOPT_URL, "http://www.google.ie/");
    curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
    res = curl_easy_perform(curl);

    /* always cleanup */ 
    curl_slist_free_all(headers);
    curl_easy_cleanup(curl);
  }
  return 0;
}

关于c - 发送原始 http header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7065757/

相关文章:

c - c中画直线的函数

c - 使用 Linux 进行实时编程

c++ - C++ 中的 HTTP Json 请求?

linux - 从需要认证的页面下载网页源码

java - 如何使用 Jetty Http 客户端保存 cookie

c - FreeRTOS、Atmel Studio - 任务在接收二进制信号量之前不会被阻止

c - 如何判断双数的分母是否为奇数?

android - socket.io + android - 断开套接字并使用不同的 url 重新连接

sockets - 使用桌面 WPF 应用程序的套接字推送通知(无 Win8 应用程序)

node.js - 多个 Nodejs 服务器还是单个?