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

时间: 2025-01-08 22:27:39

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

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

服务器设计技术有很多,按使用的协议来分有TCP服务器和UDP服务器.按处理方式来分有循环服务器和并发服务器. 1  循环服务器与并发服务器模型 在网络程序里面,一般来说都是许多客户对应一个服务器,为了处理客户的请求,对服务端的程序就提出了特殊的要求. 目前最常用的服务器模型有: ·循环服务器:服务器在同一时刻只能响应一个客户端的请求 ·并发服务器:服务器在同一时刻可以响应多个客户端的请求 1.1 UDP循环服务器的实现方法: UDP循环服务器每次从套接字上读取一个客户端的请求->处理->然后将

基于Linux环境Tomcat-MySQL的服务器搭建

在开发日趋激烈的今天,我们可不能再只会编码了,这样搞不好,就成了一辈子的码奴!所以这里简单的分享一下服务器的搭建,由于Linux的安全性等一切因素让它成为了服务器平台的首选环境!今天跟大家分享的是Java项目的服务器搭建,好啦,步骤来了: 1.下载jdk http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html 2.下载tomcat wget http://apache.etoak.co

《从零开始搭建游戏服务器》项目发布到Linux环境

前言: 之前我们提及了如何使用Maven来创建.管理和打包项目,也简单过了一遍Linux中搭建Java开发环境的步骤,现在我们就开始将我们之前开发的项目demo发布到Linux环境下,并让它正常运行起来. 发布思路: 使用Maven将项目打包为.jar 将项目的.jar和项目所有依赖的jar包都复制到Linux下 创建项目启动脚本来启动项目 准备工作: 查询Linux系统机器的Ip地址:方法很简单,在Linux中打开终端输入ifconfig即可查到Ip地址为192.168.35.130: 修改E

衡阳高防服务器租用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

如何部署一个本地的web项目到服务器-搭建linux环境(2)?

前面我们已经把linux环境部署好了,在这里我们可以把我们需要的上线的html文件或者其他发布到服务器上. 先说一下linux基础命令:ls,cd,mkdir,vim,等等 具体参考:这位大神的博客 然后先创建一个文件夹放置我们需要上线的html文件: mkdir test 这里我们事先准备好我们要上线的文件,比如react,vue经过webpack打包后的文件都可以: 使用Transmit进行文件传输, 首先查看服务器ip,sftp传输需要ip 具体设置如下: 成功链接就会出现下面的页面,这样

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

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

zabbix监控MySQL(windows和linux环境)

一.linux环境下监控MySQL Zabbix Server自带了MySQL插件来监控mysql数据库的模板,只需要配置好agent客户端,然后在web端给主机增加模板就行了 监控项目: Com_update:     mysql执行的更新个数 Com_select:     mysql执行的查询个数 Com_insert:     mysql执行插入的个数 Com_delete:     执行删除的个数 Com_rollback:   执行回滚的操作个数 Bytes_received:  接

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/ 环境准备: 所以