Tag: http

从套接字C HTTP读取

我想知道如何判断是否已从套接字接收到所有数据。 这是一个简单的Web代理,现在我正在处理请求部分,所以发送的内容应该以’\ r \ n \ n \ n \ n’终止。我不知道请求会有多长。 我在这里读了一些post说我应该检查读取函数返回的0? 但其他说0的人只有在客户关闭连接时才会返回? 否则我可以检查缓冲区的最后一个字符,看看它们是否与上面的字符匹配? 计划只是将读取的数据加载到缓冲区中,如果有更多的数据重复,则保存该数据。 谢谢

如何使用基于TCP的HTTP下载图像?

我有一些图像可以使用HTTP下载。 我得到了这些图像的URL,如何构建基于TCP的HTTP缓冲区来下载图像? 我目前的平台上没有库,这个平台唯一支持的语言是C,所以我必须为这些资源构建HTTP缓冲区。 目前我已经构建了正常的API请求,它们都是HTTP请求,每个请求都有0个或更多参数。 但是图像请求只有一个URL,例如http://some-image.jpg ,它似乎只是一个下载工作,没有API参数,没有授权,它很简单,但是如何构建TCP请求?

发送Http“发布”请求到C或C ++中的Php代码

我正在尝试向我的php文件发送“post”reguest并获取信息,它工作正常,但是 它还会在从php文件打印我的响应之前打印一些东西。 这就是它的印刷品 第一: HTTP / 1.1 200好的 日期:星期五,2012年4月20日10:19:12 GMT 服务器:Apache / 2.2.21(Unix)mod_ssl / 2.2.21 OpenSSL / 0.9.8r DAV / 2 PHP / 5.3.6 X-Powered-By:PHP / 5.3.6 内容长度:12 连接:关闭 内容类型:text / html 然后我的回答: 你好,世界 我怎么能只打印我从myphp代码中得到的东西,没有: HTTP / 1.1 200好的 日期:星期五,2012年4月20日10:19:12 GMT 服务器:Apache / 2.2.21(Unix)mod_ssl / 2.2.21 OpenSSL / 0.9.8r DAV / 2 PHP / 5.3.6 […]

使用C套接字发送HTTP响应

我正在尝试向浏览器发送HTTP响应 char *reply = “HTTP/1.1 200 OK\n” “Date: Thu, 19 Feb 2009 12:27:04 GMT\n” “Server: Apache/2.2.3\n” “Last-Modified: Wed, 18 Jun 2003 16:05:58 GMT\n” “ETag: \”56d-9989200-1132c580\”\n” “Content-Type: text/html\n” “Content-Length: 15\n” “Accept-Ranges: bytes\n” “Connection: close\n” “\n” “sdfkjsdnbfkjbsf”; int sd = socket(PF_INET, SOCK_STREAM, 0); struct sockaddr_in addr; bzero(&addr, sizeof(addr)); addr.sin_family = AF_INET; addr.sin_port = htons(8081); addr.sin_addr.s_addr = INADDR_ANY; […]

如何在C中解析HTTP响应?

我正在编写一个小项目,它使用HTTP 1.1 GET和POST与一组服务器进行交互。 服务器在一些标题行之后给出了响应,所以我在使用\n作为分隔符时使用strtok()函数但是每当我尝试这样做时都会发生崩溃。 有没有简单的方法来解析C中的HTTP响应? 我不想为此使用第三方库,但如果它真的是必要的,我将不会有任何问题。 非常感谢你所做的一切。 编辑:这是一些示例代码,只是尝试打印行: char *response = “HTTP/1.1 200 OK\nServer: Apache-Coyote/1.1\nPragma: no-cache” char *token = NULL; token = strtok(response, “\n”); while (token) { printf(“Current token: %s.\n”, token); token = strtok(NULL, “\n”); }

跨平台,具有异步function的C / C ++ HTTP库

我正在寻找一个可以在Windows和Linux上运行的C / C ++库,它允许我以不同的方式查询多个web服务器(每分钟1000个)页面标题和下载网页,就像WinHttp库在Windows环境中一样。 到目前为止,我遇到了libCurl,它似乎做了我想要的,但是异步方面看起来很可疑。 您认为绕过使用库的想法并根据可实现此目的的套接字从头开始编写简单的东西是多么容易? 任何意见,建议或建议都会受到欢迎。 附录: – 任何机构都有关于使用libCurl进行此操作的评论,我说同步方面可能看起来很可疑,但有没有人有任何经验呢?

使用C套接字在HTTP响应中发送二进制文件

我试图在http响应中发送二进制文件(png图像)。 FILE *file; char *buffer; int fileLen; //Open file file = fopen(“1.png”, “rb”); if (!file) { return; } //Get file length fseek(file, 0, SEEK_END); fileLen=ftell(file); fseek(file, 0, SEEK_SET); //Allocate memory buffer=(char *)malloc(fileLen+1); if (!buffer) { fprintf(stderr, “Memory error!”); fclose(file); return; } //Read file contents into buffer fread(buffer, fileLen, 1, file); fclose(file); //free(buffer); char header[102400]; sprintf(header, […]

如何劫持所有本地http请求并使用c提取url?

我应该去哪个方向( 图书馆 , 文件 )? UPDATE 有人可以说明如何使用winpcap来完成这项工作吗? 更新2 如何validation数据包是否为HTTP?

如何在没有libcurl的情况下在C中发出HTTP get请求?

我想编写一个C程序来生成Get Request而不使用任何外部库。 这可能只使用C库,使用套接字吗? 我正在考虑制作一个http数据包(使用正确的格式)并将其发送到服务器。 这是唯一可能的方式还是有更好的方法?

http服务器响应(套接字)的标头和内容之间不同

我想知道,有没有可能找出响应Stream中标题结束的位置? 问题的背景如下,我在c中使用套接字从网站获取内容,内容以gzip编码。 我想直接从流中读取内容并使用zlib对gzip内容进行编码。 但我如何知道gzip内容已启动且http标头已完成。 在我看来,我大致尝试了两种给我一些奇怪结果的方法。 首先,我在整个流中读取,并在终端中打印出来,我的http标题以“\ r \ n \ n \ n \ n”结束,就像我预期的那样,但是时间紧迫,我只需要检索一次响应以获取标题然后使用while循环读取内容,此处标题结束时不带“\ r \ n \ n \ n \ n”。 为什么? 哪种方式是阅读内容的正确方法? 我只是给你代码,这样你就可以看到我是如何从服务器获得响应的。 //first way (gives rnrn) char *output, *output_header, *output_content, **output_result; size_t size; FILE *stream; stream = open_memstream (&output, &size); char BUF[BUFSIZ]; while(recv(socket_desc, BUF, (BUFSIZ – 1), 0) > 0) […]