1. 程式人生 > >C語言實現的http請求

C語言實現的http請求

/*
 * =====================================================================================
 *
 * Filename: RequestHttp.c
 *
 * Description:
 *
 * Version: 1.0
 * Created: 2006年12月31日 13時14分25秒 UTC
 * Revision: none
 * Compiler: gcc RequestHttp.c -o RequestHttp
 *
 * Author: Flw10000, [email protected]
 *
 * =====================================================================================
 */


#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<errno.h>

#defineBUFSIZE 1024
#define DestIp "xx.xx.xx.xx"
#define DestPort 9000
#define Req 
"GET /index.html HTTP/1.1\r\nHost: xx.xx.xx.xx\r\nConnection: Close\r\n\r\n"
#define ReqLen sizeof(Req)

int main(int argc,char*argv[]){
                ssize_t i;
int nRequestLen;

char strResponse[BUFSIZE]={0};
char strRequest[BUFSIZE]={0};


int sockfd, numbytes;
structsockaddr_in dest_addr;/* connector's address information */


if((sockfd =socket(AF_INET,SOCK_STREAM, 0))==-1){
perror("socket");
exit(1);
}

                dest_addr.sin_family =AF_INET;/* host byte order */
                dest_addr.sin_port =htons(DestPort);/* short, network byte order */
                dest_addr.sin_addr.s_addr = inet_addr(DestIp);

/* Create and setup the connection */
if(connect(sockfd,(structsockaddr*)&dest_addr,sizeof(structsockaddr))==-1){
perror("connect");
exit(1);
}

/* Send the request */
strncpy(strRequest, Req,ReqLen);
                nRequestLen = ReqLen;
if(write(sockfd,strRequest,nRequestLen)==-1){
perror("write");
exit(1);
}

/* Read in the response */
while(1){
                                i =read(sockfd,strResponse,BUFSIZE-1);
if(>= i){
break;
}
                                strResponse[i]='\0';
printf(strResponse);

}

/* Close the connection */
close(sockfd);
}

相關推薦

C++:C語言實現HTTP的GET和POST請求例程參考 C++:C語言實現HTTP的GET和POST請求

C++:C語言實現HTTP的GET和POST請求   閱讀目錄   HTTP請求和IP/TCP   實現GET請求   實現POST請求:   參考: 回到頂部

C語言實現http的下載

/************************************************************ Copyright (C), 2016, Leon, All Rights Reserved. FileName: download.c coding: UTF-8 Descripti

基於RTOS的c語言實現http檔案上傳

本實驗為了減少程式碼量,使用了封裝比較完善的http庫,本文主要講述http檔案上傳的主要要求。 一、分析http關鍵頭部資訊 為了分析http header,我們通過chrome得到上傳檔案時的http資訊: 通過上面的截圖我們可以發現,關鍵頭部

Linux下用c語言實現發送http請求 方式可以Get或者Post例程參考

sockaddr select sleep online 創建 線程終止 index -s lse [1].[代碼] Linux下用c語言實現發送http請求 方式可以Get或者Post 跳至 [1] ? 1 2 3 4 5 6 7 8 9 10 11 12 1

Linux下用c語言實現傳送http請求 方式可以Get或者Post例程參考

[1].[程式碼] Linux下用c語言實現傳送http請求 方式可以Get或者Post 跳至 [1] ? 1 2

Linux下用c語言實現傳送http請求

前言 在linux下,使用socket進行程式設計,需要到伺服器上進行獲取資料,伺服器使用的php程式設計,需要使用http的方式進行獲取資料。 程式碼 #include <stdio.h> #include <string.h&

C語言實現http請求

/*  * =====================================================================================  *  * Filename: RequestHttp.c  *  * Descripti

C++使用CHttpFile實現Http請求

C++實現http請求的程式碼,參照網上的修改了下在mfc中使用 1、HttpClient.h //////////////////////////////////// HttpClient.h #ifndef HTTPCLIENT_H #define HTTPCLIENT

【原始碼剖析】tinyhttpd —— C 語言實現最簡單的 HTTP 伺服器

    tinyhttpd 是一個不到 500 行的超輕量型 Http Server,用來學習非常不錯,可以幫助我們真正理解伺服器程式的本質。     看完所有原始碼,真的感覺有很大收穫,無論是 unix 的程式設計,還是 GET/POST 的 Web 處理流程

C++ 簡單實現HTTP GET/POST 請求

轉載出處:詳情http://m.blog.csdn.net/article/details?id=16336713 HTTP(超文字傳輸協議)是一種客戶端與服務端的傳輸協議,最早用於瀏覽器和伺服器之間的通訊,後來因為其使用靈活、方便等特點,廣泛用於客戶端與服務端的通訊。文章

socket http檔案下載器c語言實現

socket是網路程式設計的基石, 本文介紹如何使用c語言使用socket實現一個http檔案下載器. 下載分為以下幾個過程 解析出下載地址中的域名和檔名 通過域名獲取伺服器的IP地址 與目標伺服器建立連線 構建http請求頭並將其傳送到伺服器 等待

二十四進制編碼串轉換為32位無符號整數(C語言實現

bool while open 參數錯誤 hint div 第一個字符 bsp opened typedef int BOOL; #define TRUE 1; #define FALSE 0; #define UINT_MAX 0xffffffff

遺傳算法的C語言實現(二)

print 比較 詳細 author 當前 cross max r+ 訪問 上一次我們使用遺傳算法求解了一個較為復雜的多元非線性函數的極值問題,也基本了解了遺傳算法的實現基本步驟。這一次,我再以經典的TSP問題為例,更加深入地說明遺傳算法中選擇、交叉、變異等核心步

C語言實現粒子群算法(PSO)二

計算 default img 第一個元素 1.4 best 實驗 atl 說過 上一回說了基本粒子群算法的實現,並且給出了C語言代碼。這一篇主要講解影響粒子群算法的一個重要參數---w。我們已經說過粒子群算法的核心的兩個公式為: Vid(k+1)=w*Vid(k)+c1*r

遺傳算法的C語言實現(一):以非線性函數求極值為例

選中 algorithm 利用 mail 進化 lock gcc 最大值 -s 以前搞數學建模的時候,研究過(其實也不算是研究,只是大概了解)一些人工智能算法,比如前面已經說過的粒子群算法(PSO),還有著名的遺傳算法(GA),模擬退火算法(SA),蟻群算法(A

C語言實現粒子群算法(PSO)一

mat 遺傳 基於 [1] 沒有 實驗 規模 直觀 解決 最近在溫習C語言,看的書是《C primer Plus》,忽然想起來以前在參加數學建模的時候,用過的一些智能算法,比如遺傳算法、粒子群算法、蟻群算法等等。當時是使用MATLAB來實現的,而且有些MATLAB自帶了工具

(續)順序表之單循環鏈表(C語言實現)

include 作者 指針 順序 gb2 mark oos case 循環 單循環鏈表和單鏈表的唯一差別在於單循環鏈表的最後一個節點的指針域指向第一個節點, 使得整個鏈表形成一個環. C實現代碼例如以下: #include<stdio.h>

geek青年的狀態機,查表,純C語言實現

fill south 總結 target 堅持 str 分享 接收 backward geek青年的狀態機,查表,純C語言實現 1. 問題的提出。抽象 建一,不止是他,不少人跟我討論過這種問題:怎樣才幹保證在需求變更、擴充的情況下。程序的主體部分不動呢? 這是一個

C語言實現數據結構串(堆分配存儲表示法)

+= 賦值 size ++ fine hello n) clu 刪除字符串 ———————————————————————————————————————————— 堆分配存儲表示法 —————————————————————————————————————————

帶頭節點的單鏈表-------C語言實現

lib gmail spa 階段 c語言實現 fun 變化 尾插 mail 1 /***************************************************** 2 Author:Simon_Kly Version:0.1