Linux环境下HTTP服务器demo

#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.返回预设好的网页

时间: 2024-10-10 23:51:43

Linux环境下HTTP服务器demo的相关文章

Linux环境下DNS服务器原理及主服务器简单配置

1,DNS介绍 DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串.通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析). 监听的协议端口:UDP/TCP 53 软件实现:bind 2,DNS数状结构: 如下图: 根域:. 一级域如下: 组织域:.com, .org, .net, .mil, .edu, .gov, .info, .cc, .

linux环境下DNS服务器

DNS (Domain Name Service) 域名服务 用于主机名和IP的转换.分为正向解析(FQDN--->IP)和反向解析(IP--->FQDN) UDP协议,53端口 TCP协议,53端口 DNS服务器类型: 主DNS服务器:维护所负责的区域内解析库的服务器 从DNS服务器:定时同步更新主DNS服务器的内容记录.只有当主服务器当机后,从服务器才会接替其工作 高速缓存服务器:把经常要查询DNS记录缓存到本地,以便下次更快进行解析反馈 转发服务器:负责将非本区域内的域名转发到其他DNS

Linux Debian 下LNMP服务器——nginx+mysql+php环境搭建及配置

昨天刚给公司服务器装了LNMP服务器环境,在这里简单记录一下过程备忘. 这里我在安装的时候是用的Dotdeb源,仅供参考. 1.导入Dotdeb源,据说Dotdeb源里的软件版本比较新. 在向源中导入Dotdeb前,我们需要先获取GnuPG key并导入: wget http://www.dotdeb.org/dotdeb.gpg cat dotdeb.gpg | apt-key add - 提示OK,表明导入成功.然后我们开始导入Dotdeb源,源列表的位置在“/etc/apt/sources

衡阳高防服务器租用Linux环境下架设DNS服务器教程

衡阳高防服务器租用Linux环境下架设DNS服务器教程 DNS是域名系统Domain Name System的缩写,是一种组织域层次结构的计算机和网络服务命名系统.当用户在应用程序中输入DNS名称时,DNS服务可以将此名称解析为与此名称相关的IP地址信息.本文就带领大家在Linux环境下建立一个DNS服务器. 一.相关知识概述 DNS(Domain Name System)即域名服务系统,作用是完成域名与IP地址的互换.网络上的每一台主机都有一个域名,域名给出有关主机的IP地址.MAIL路由信息

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

首先说明,以下文本内容用vim编辑麻烦 可参考阿里云ECS服务器Linux环境下配置php服务器(一)--基础配置篇 这一次我们来继续说说phpMyAdmin的安装. 什么是phpMyAdmin?phpMyAdmin是一种mysql的管理工具,它可以直接通过网页来管理你的MySQL,当然,phpMyAdmin不是必要的,如果你不安装phpMyAdmin,一样可以通过mysql的命令行来管理你的mysql. 开始安装. 首先找到phpMyAdmin的下载地址(推荐官网地址https://www.p

ant+jmeter 在Linux环境下接口自动化测试环境搭建(2)

上一篇讲过在Windows下搭建的方法,今天这里写一下在Linux环境下搭建的方法. 实验准备:Linux服务器一台. 服务器上安装好jdk,配置好环境变量. 服务器上配置好ant. 工具准备: Jdk下载地址: http://www.oracle.com/technetwork/java/javase/downloads/index.html Jmeter下载地址 http://jmeter.apache.org/ Ant下载地址 http://ant.apache.org/ 环境准备: 所以

mosquitto在Linux环境下的部署/安装/使用/测试

mosquitto在Linux环境下的部署 看了有三四天的的源码,(当然没怎么好好看了),突然发现对mosquitto的源码有了一点点感觉,于是在第五天决定在Linux环境下部署mosquitto. 使用传统源码安装步骤: 步骤1:http://mosquitto.org/files/source/官网下载源码,放到Linux环境中.解压后,找到主要配置文件config.mk,其中包含mosquitto的安装选项,需要注意的是,默认情况下mosquitto的安装需要OpenSSL(一个强大的安全

Linux环境下安装Tigase XMPP Server

Tigase是一种XMPP服务器,可以作为采用XMPP协议的各种IM(Instant Messeging)工具(如Pandion.Spark等)的服务器. 在Linux环境下安装Tigase的步骤如下: (1)下载安装文件 到https://projects.tigase.org/projects/tigase-server/files下载安装文件,我下载的是tigase-server-5.2.0-b3447-dist.tar.gz. (2)解压缩 创建一个文件夹,将tigase-server-

weblogic新建域-linux环境下

[[email protected] bin]#/oracle/middleware/wlserver_12.1/common/bin [[email protected] bin]# ./config.sh -mode=console <---------------------------------------------------------------------------------- Fusion Middleware 配置向导 ------------------------