#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <netinet/in.h>
#include <sys/socket.h> #define BUF_LEN 1028 // 1028 ever
#define PORT 8000
const static char html_re_hd_su[] = "HTTP/1.1 200 OK\r\nContent-type: text/html\r\n\r\n"; //html response header : success int CreatTcpSocket_fd(){
int socket_fd;
struct sockaddr_in address;
socket_fd = socket(AF_INET, SOCK_STREAM, 0); //tcp protocal
//catch up exception
if(socket_fd < 0){
printf("socket creation failed\n");
exit(1); // 1 means exit with exception
return 1;
} //step 2: bind the socket file description
memset(&address, 0, sizeof(address));
address.sin_family = AF_INET; //Internet protocal
address.sin_port = htons(PORT);
address.sin_addr.s_addr = INADDR_ANY; //set the host ip
if(bind(socket_fd, (struct sockaddr*)&address, sizeof(struct sockaddr_in))){
//catch up exception
printf("socket binding failed!\n");
exit(1);
return 1;
}
return socket_fd;
} void AnalyseTcpRequest(const int socket_fd){
char requestMessage[BUF_LEN];
read(socket_fd, requestMessage, BUF_LEN);
printf("%s\n", requestMessage);
} void ReplyTcpRequest(int socket_fd){
char replyMessage[]=
"<html><head><title>Welcome!</title></head>"
"<body><h1>Welcome to Feng YuBo HTTP server demo!</h1>"
"<p>This is a just small test page.</p></body></html>"; write(socket_fd, html_re_hd_su, strlen(html_re_hd_su));
write(socket_fd, replyMessage, strlen(replyMessage));
printf("replyed...\n");
} int main(){
int socket_fd = CreatTcpSocket_fd();
listen(socket_fd, 5); //max conection number is 5 now. //step 3: begin to accept tcp request
struct sockaddr_in their_address;
int their_sin_len = sizeof(struct sockaddr_in); for ( ; ; )
{
printf("begin to accept tcp request...\n");
//begin to block the processing
int newSocket_fd = accept(socket_fd, (struct sockaddr*)&their_address, &their_sin_len);
printf("analysing...\n");
AnalyseTcpRequest(newSocket_fd);
ReplyTcpRequest(newSocket_fd);
close(newSocket_fd);
} exit(0);
return 0;
}

目标: 1.接收HTTP请求  2.打印HTTP请求报文  3.返回HTTP响应报文  4.返回预设好的网页

Linux 环境 HTTP 服务器的更多相关文章

  1. Linux环境(服务器)下非root用户安装Python3.6

    Linux环境(服务器)下非root用户安装Python3.6 在管理实验室集群时候,遇到的问题--非root用户在搭建自己环境时候,如何搭建. 注意: root用户的根目录是root,非root用户 ...

  2. LINUX环境并发服务器的三种实现模型

    服务器设计技术有很多,按使用的协议来分有TCP服务器和UDP服务器.按处理方式来分有循环服务器和并发服务器. 1  循环服务器与并发服务器模型 在网络程序里面,一般来说都是许多客户对应一个服务器,为了 ...

  3. Linux环境下服务器环境搭建-mysql

    下载对应版本的mysql.rpm(Linux 6 安装el6 Linux 7 安装el7) 安装环境 centos 7,安装版本mysql57-community-release-el7-9.noar ...

  4. linux下的服务器搭建集成环境

    linux下的服务器搭建集成环境 ——写给初学者的我们 1.准备工具 1.1 SecureCRT SecureCRT是一款支持SSH(SSH1和SSH2)的终端仿真程序,简单地说是Windows下登录 ...

  5. 安装与配置apache WEB服务器(Linux环境)

    Linux环境下安装一个软件的方式多数为两种: 1.通过命令从远程源下载自动默认安装 2.编译安装 第一种较为简单,直接通过 yum 或者 apt-get 直接安装即可,但是对我来说,编译安装可能更加 ...

  6. 阿里云ECS服务器Linux环境下配置php服务器(二)--phpMyAdmin篇

    上一篇讲了PHP服务器的基本配置,我们安装了apache,php,还有MySQL,最后还跑通了一个非常简单的php页面,有兴趣的朋友可以看我的这篇博客: 阿里云ECS服务器Linux环境下配置php服 ...

  7. Windows/Linux 环境搭建Git服务器 + vs2012集成git

    1. 下载.安装Git 我的系统是Windows 7,需要安装Git for Windows. 下载地址: http://code.google.com/p/msysgit/downloads/lis ...

  8. JavaWeb入门——在Linux环境下安装Tomcat服务器

    JavaWeb入门——在Linux环境下安装Tomcat服务器 摘要:本文主要学习了如何在Linux环境下安装Tomcat服务器. 准备工作 检查Java环境变量 检查系统是否配置了Java的环境变量 ...

  9. 【转】Linux环境搭建FTP服务器与Python实现FTP客户端的交互介绍

    Linux环境搭建FTP服务器与Python实现FTP客户端的交互介绍 FTP 是File Transfer Protocol(文件传输协议)的英文简称,它基于传输层协议TCP建立,用于Interne ...

随机推荐

  1. XTU 1261 - Roads - [最小割][2017湘潭邀请赛B题(江苏省赛)]

    之前在网上搜了一个下午没搜到这道题的题解,然后同时又对着叉姐写的两行字题解看了一个下午: 虽然基本上已经知道了这题的思路,但愣是因为自己代码实现起来太繁复,外加不确定正确性,没敢码…… 但是一道题肝了 ...

  2. oracle union 用法

    [sql] view plaincopyprint?众所周知的几个结果集集合操作命令,今天详细地测试了一下,发现一些问题,记录备考. 假设我们有一个表Student,包括以下字段与数据: drop t ...

  3. 【紫书】Undraw the Trees UVA - 10562 递归,字符串

    题意:给你画了一颗树,你要把它的前序输出. 题解:读进到二维数组.边解析边输出. 坑:少打了个-1. #define _CRT_SECURE_NO_WARNINGS #include<cstri ...

  4. 【紫书】Tree UVA - 548 静态建树dfs

    题意:给你中序后序 求某叶子节点使得从根到该节点权值和最小.若存在多个,输出其权值最小的那个. 题解:先建树,然后暴力dfs/bfs所有路径,取min 技巧:递归传参数,l1,r1,l2,r2, su ...

  5. bzip2 zip 压缩后体积比 0.8:1

    1. 对.bz2 后缀文件 跳过不处理 2.逐行同字段的json文件,压缩后大小为原文件的12.81% 测试文件近似认为为逐行json文本数据,没有进行多文件重复测试,没有统计时间: {"u ...

  6. Ubuntu下安装vsftpd

    1.sudo apt-get install vsftpd 2.修改配置文件 sudo gedit /etc/vsftpd.conf write_enable=YES ls_recurse_enabl ...

  7. CF1053E Euler tour 构造

    正解:构造 解题报告: 传送门! 这种题目一般都是首先考虑合法性 这题也不例外,思考怎么样是合法的呢? 有四点: 1)a[1]=a[2n-1],显然不说 2)若a[i]=a[j],则(j-i)& ...

  8. Git 安装及使用小结

    Git 安装及使用小结 a:focus { outline: thin dotted #333; outline: 5px auto -webkit-focus-ring-color; outline ...

  9. TortoiseGit的使用

    TortoiseGit只是一个外壳而已,它调用的是msysgit,相当于msysgit的windows gui而已,如果喜欢用git命令行,那就不需要安装它. 所以要先安装msysgit(window ...

  10. promise VS future

    Future and Promise are the two separate sides of an asynchronous operation. promise is used by the & ...