国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - C/C++ - 如何利用C語言實現最簡單的HTTP服務器詳解

如何利用C語言實現最簡單的HTTP服務器詳解

2021-08-05 13:37作程 C/C++

這篇文章主要給大家介紹了關于如何利用C語言實現最簡單的HTTP服務器的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用C語言具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧

此段代碼的特點

?
1
<h1>Hello!</h1>

如何編譯運行?

編譯: gcc -o hello_server hello_server.c

運行: ./hello_server

請求: curl http://localhost:8888/any

源文件 hello_server.c

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <string.h>
 
#define PORT 8888
#define BUFFER_SIZE 4096
#define RESPONSE_HEADER "HTTP/1.1 200 OK\r\nConnection: close\r\nAccept-Ranges: bytes\r\nContent-Type: text/html\r\n\r\n"
#define RESPONSE_BODY "<h1>Hello!</h1>"
 
int handle(int conn){
  int len = 0;
  char buffer[BUFFER_SIZE];
  char *pos = buffer;
  bzero(buffer, BUFFER_SIZE);
  len = recv(conn, buffer, BUFFER_SIZE, 0);
  if (len <= 0 ) {
    printf ("recv error");
    return -1;
  } else {
    printf("Debug request:\n--------------\n%s\n\n",buffer);
  }
 
  send(conn, RESPONSE_HEADER RESPONSE_BODY, sizeof(RESPONSE_HEADER RESPONSE_BODY), 0);
  close(conn);//關閉連接
}
 
int main(int argc,char *argv[]){
  int port = PORT;
  struct sockaddr_in client_sockaddr;  
  struct sockaddr_in server_sockaddr;
  int listenfd = socket(AF_INET,SOCK_STREAM,0);
  int opt = 1;
  int conn;
  socklen_t length = sizeof(struct sockaddr_in);
  setsockopt(listenfd, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(int));
  server_sockaddr.sin_family = AF_INET;
  server_sockaddr.sin_port = htons(port);
  server_sockaddr.sin_addr.s_addr = htonl(INADDR_ANY);
 
  if(bind(listenfd,(struct sockaddr *)&server_sockaddr,sizeof(server_sockaddr))==-1){
    printf("bind error!\n");
    return -1; 
  }
 
  if(listen(listenfd, 10) < 0) {
    printf("listen failed!\n");
    return -1; 
  }
 
  while(1){
    conn = accept(listenfd, (struct sockaddr*)&client_sockaddr, &length);
    if(conn < 0){
      printf("connect error!\n");
      continue;
    }
    if (handle(conn) < 0) {
      printf("connect error!\n");
      close(conn);
      continue;
    }
  }
  return 0;
}

后記

為什么要寫這篇博文?

原因是,在使用公司里的自動化平臺部署c++服務時,拿這個簡單的示例來測試平臺是否有問題。俗稱趟一遍坑兒。

在網上也搜索了很多不少博文,發現里面的代碼有幾個問題,第一個問題就是編譯不過,第二個問題則是有的代碼應答必須要有文件,這對我的測試也造成了些許麻煩。

所以就自己參考別人的列子,在自己的博客里寫一個簡單的吧。以后再去趟別的自動化部署系統的坑的時候,順手就能拿來用。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對服務器之家的支持。

原文鏈接:https://it.zuocheng.net/the-simplest-httpserver-implemented-in-c-zh

延伸 · 閱讀

精彩推薦
  • C/C++深入理解goto語句的替代實現方式分析

    深入理解goto語句的替代實現方式分析

    本篇文章是對goto語句的替代實現方式進行了詳細的分析介紹,需要的朋友參考下...

    C語言教程網7342020-12-03
  • C/C++c++ 單線程實現同時監聽多個端口

    c++ 單線程實現同時監聽多個端口

    這篇文章主要介紹了c++ 單線程實現同時監聽多個端口的方法,幫助大家更好的理解和學習使用c++,感興趣的朋友可以了解下...

    源之緣11542021-10-27
  • C/C++詳解c語言中的 strcpy和strncpy字符串函數使用

    詳解c語言中的 strcpy和strncpy字符串函數使用

    strcpy 和strcnpy函數是字符串復制函數。接下來通過本文給大家介紹c語言中的strcpy和strncpy字符串函數使用,感興趣的朋友跟隨小編要求看看吧...

    spring-go5642021-07-02
  • C/C++C語言中炫酷的文件操作實例詳解

    C語言中炫酷的文件操作實例詳解

    內存中的數據都是暫時的,當程序結束時,它們都將丟失,為了永久性的保存大量的數據,C語言提供了對文件的操作,這篇文章主要給大家介紹了關于C語言中文件...

    針眼_6702022-01-24
  • C/C++C/C++經典實例之模擬計算器示例代碼

    C/C++經典實例之模擬計算器示例代碼

    最近在看到的一個需求,本以為比較簡單,但花了不少時間,所以下面這篇文章主要給大家介紹了關于C/C++經典實例之模擬計算器的相關資料,文中通過示...

    jia150610152021-06-07
  • C/C++學習C++編程的必備軟件

    學習C++編程的必備軟件

    本文給大家分享的是作者在學習使用C++進行編程的時候所用到的一些常用的軟件,這里推薦給大家...

    謝恩銘10102021-05-08
  • C/C++C++之重載 重定義與重寫用法詳解

    C++之重載 重定義與重寫用法詳解

    這篇文章主要介紹了C++之重載 重定義與重寫用法詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下...

    青山的青6062022-01-04
  • C/C++C語言實現電腦關機程序

    C語言實現電腦關機程序

    這篇文章主要為大家詳細介紹了C語言實現電腦關機程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    xiaocaidayong8482021-08-20
主站蜘蛛池模板: 中文字幕在线观看一区二区 | 亚洲国产欧美在线 | 久久久久高清 | 亚洲久久一区二区 | 亚洲国产精品视频 | 99精品一区| 精品在线一区二区三区 | 精品国产99 | 亚洲aⅴ天堂av在线电影软件 | 日本在线观看一区 | 天天干天天射天天操 | 日韩中文字幕在线视频 | 99re在线播放视频 | 亚洲福利一区二区 | 久草电影网 | 成人爽a毛片一区二区免费 成年人毛片视频 | 日本中文字幕在线播放 | 婷婷综合色| 日韩中文字幕视频在线观看 | 久久九九国产精品 | 成年人在线视频 | 国产免费久久 | 韩国精品一区二区 | 在线国产视频 | 视频网站免费观看 | 中文字幕av一区二区三区 | 有码在线 | 亚洲电影在线播放 | 理伦影院 | av电影在线免费 | 91电影国产 | 中文字幕av在线播放 | 最新中文字幕 | 亚洲国产成人av | 亚洲最新无码中文字幕久久 | 国产精品美女久久久久久不卡 | 网站色 | 国产精品成人国产乱一区 | 欧美午夜一区二区福利视频 | 久久精品二区 | 国产成人综合在线观看 |