Linux 环境 HTTP 服务器
#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 服务器的更多相关文章
- Linux环境(服务器)下非root用户安装Python3.6
Linux环境(服务器)下非root用户安装Python3.6 在管理实验室集群时候,遇到的问题--非root用户在搭建自己环境时候,如何搭建. 注意: root用户的根目录是root,非root用户 ...
- LINUX环境并发服务器的三种实现模型
服务器设计技术有很多,按使用的协议来分有TCP服务器和UDP服务器.按处理方式来分有循环服务器和并发服务器. 1 循环服务器与并发服务器模型 在网络程序里面,一般来说都是许多客户对应一个服务器,为了 ...
- Linux环境下服务器环境搭建-mysql
下载对应版本的mysql.rpm(Linux 6 安装el6 Linux 7 安装el7) 安装环境 centos 7,安装版本mysql57-community-release-el7-9.noar ...
- linux下的服务器搭建集成环境
linux下的服务器搭建集成环境 ——写给初学者的我们 1.准备工具 1.1 SecureCRT SecureCRT是一款支持SSH(SSH1和SSH2)的终端仿真程序,简单地说是Windows下登录 ...
- 安装与配置apache WEB服务器(Linux环境)
Linux环境下安装一个软件的方式多数为两种: 1.通过命令从远程源下载自动默认安装 2.编译安装 第一种较为简单,直接通过 yum 或者 apt-get 直接安装即可,但是对我来说,编译安装可能更加 ...
- 阿里云ECS服务器Linux环境下配置php服务器(二)--phpMyAdmin篇
上一篇讲了PHP服务器的基本配置,我们安装了apache,php,还有MySQL,最后还跑通了一个非常简单的php页面,有兴趣的朋友可以看我的这篇博客: 阿里云ECS服务器Linux环境下配置php服 ...
- Windows/Linux 环境搭建Git服务器 + vs2012集成git
1. 下载.安装Git 我的系统是Windows 7,需要安装Git for Windows. 下载地址: http://code.google.com/p/msysgit/downloads/lis ...
- JavaWeb入门——在Linux环境下安装Tomcat服务器
JavaWeb入门——在Linux环境下安装Tomcat服务器 摘要:本文主要学习了如何在Linux环境下安装Tomcat服务器. 准备工作 检查Java环境变量 检查系统是否配置了Java的环境变量 ...
- 【转】Linux环境搭建FTP服务器与Python实现FTP客户端的交互介绍
Linux环境搭建FTP服务器与Python实现FTP客户端的交互介绍 FTP 是File Transfer Protocol(文件传输协议)的英文简称,它基于传输层协议TCP建立,用于Interne ...
随机推荐
- CodeForce 832A Sasha and Sticks
A. Sasha and Sticks time limit per test2 seconds memory limit per test256 megabytes inputstandard in ...
- hihocoder 1323 - 回文字符串 - [hiho一下162周][区间dp]
用dp[i][j]表示把[i,j]的字符串str改写成回文串需要的最小操作步数. 并且假设所有dp[ii][jj] (ii>i , jj<j)都为已知,即包括dp[i+1][j].dp[i ...
- TACOTRON:端到端的语音合成
tacotron主要是将文本转化为语音,采用的结构为基于encoder-decoder的Seq2Seq的结构.其中还引入了注意机制(attention mechanism).在对模型的结构进行介绍之前 ...
- ArcGIS earth 1.0 beta体验报告——给我一个按钮我将转动整个地球
随着Esri研发中心的ArcGIS earth 1.0 beta版本的全新发布,声势浩大,很多人为之好奇静待观摩其阵容.抽出五分钟体验,良心用户,必得出炉一份体验报告了. -------------- ...
- 利用apt-get 进行jdk安装
搜索相关安装包: apt-get update apt-cache search jdk 安装: apt-get install openjdk-8-jdk
- flask的session用法
转自:https://www.cnblogs.com/52forjie/p/8282453.html 简介 flask-session是flask框架的session组件,由于原来flask内置ses ...
- mysql八:视图、触发器、事务、存储过程、函数
一 视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,可以将该结果集当做表来使用. 使用视图我们可以把查询过程中的 ...
- Python开发【笔记】:what?进程queue还能生产出线程!
进程queue底层用线程传输数据 import threading import multiprocessing def main(): queue = multiprocessing.Queue() ...
- HTML5-CSS3-JavaScript(3)
我们就从HTML5的基础总结起.希望可以提高自身的基础. HTML5 头部 和 元信息 使用 <head.../> 元素可以定义HTML文档头,该元素可以包含如下子元素. <scri ...
- Goroutines vs Threads
http://tleyden.github.io/blog/2014/10/30/goroutines-vs-threads/ Here are some of the advantages of G ...