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 ...
随机推荐
- jmxtrans
jmxtrans more tomcat.json { "servers" : [ { "port" : "12345", ...
- related Field has invalid lookup: icontains 解决方法
models.py 文件 # coding:utf8 from django.db import models class Book(models.Model): name = mod ...
- 2018/04/02 每日一个Linux命令 之 新建/修改/删除群组
-- 新建群组 groupadd [群组名] -- 修改群组名称 groupmod [群组名] [新群组名] -n 修改组名 -g 修改组识别码 -- 删除群组 groupdel [删除的组名] --
- Callable接口解析
1.接口的定义: public interface Callable<V> { V call() throws Exception; } 2.Callable和Runnable的异同 先看 ...
- 【python-opencv】几何变换
"""几何变换-缩放""" img = cv.imread(r'pictures\family.jpg') ""&quo ...
- KVM VHOST中irqfd的使用
2018-01-18 其实在之前的文章中已经简要介绍了VHOST中通过irqfd通知guest,但是并没有对irqfd的具体工作机制做深入分析,本节简要对irqfd的工作机制分析下.这里暂且不讨论具体 ...
- java.io.File实战
There are many things that can go wrong: A class works in Unix but doesn't on Windows (or vice versa ...
- [记录]Visual Studio 插件
NuGet Resharper Viasfora : 着色 ozcode2 : 调试 dbforge 调试 phptools vsdoc man DebugStudio Alpha Producti ...
- web 开发常见问题--GET POST 区别
首先,get和post是什么? --两种 HTTP 请求方法:GET 和 POST HTTP Request Methods GET.POST 专业名称是 HTTP Request Methods.但 ...
- BUG笔记:Android原生浏览器不认负百分数margin致Foundation Orbit往右滑动动画出错
一看这标题就知道无比蛋疼了是不?至少我从来不用安卓自带的浏览器... 发现这个bug的场景:万恶的Foundation,它的滚动图片插件Orbit在安卓自带浏览器下手指从左往右滑动时动画仍旧表现为从右 ...