从零开始一个http服务器(三) 代码地址 : https://github.com/flamedancer/cserver git checkout step3 运行: gcc request.h request.c response.h response.c main.c tools/utils.c tools/utils.h && ./a.out 测试: 浏览器打开 http://127.0.0.1:9734/ response 构造 观察response结构 定义并返回respon…
从零开始一个http服务器(四) 代码地址 : https://github.com/flamedancer/cserver git checkout step4 运行: make clean && make && ./myserver.out 测试: 浏览器打开 http://127.0.0.1:9734/ response 返回文件 根据request 动态返回 response Makefile 读取文件内容并作为body返回 列出目录下文件 Makefile 看看我…
从零开始一个http服务器 (二) 代码地址 : https://github.com/flamedancer/cserver git checkout step2 解析http request 观察收到的http数据 解析 request 的 method url version 解析 header 解析 body 观察收到的http数据 上一节我们完成了一个简单的基于TCP/IP的socket server 程序.而HTTP正式基于TCP/IP的应用层协议,所以只要我们的程序能读懂HTTP数…
从零开始一个http服务器(六)-多路复用和压力测试 代码地址 : https://github.com/flamedancer/cserver git checkout step6 运行: make clean && make && ./myserver.out 测试 浏览器打开 http://127.0.0.1:9734/action/show_date 多路复用和压力测试 多路复用 压力测试 多路复用 多路复用意义 到目前为止,服务器的基本业务功能我们是实现了.但好的…
从零开始一个http服务器-模拟cgi(五) 代码地址 : https://github.com/flamedancer/cserver git checkout step5 运行: make clean && make && ./myserver.out 测试 浏览器打开 http://127.0.0.1:9734/action/show_date 模拟cgi:用外部程序来优化 动态 response cgi解释 调用外部程序 cgi解释 上一节中,我们确实是实现了动态的…
从零开始一个http服务器 (一) 代码地址 : https://github.com/flamedancer/cserver git checkout step1 一个简单的socket server 从helloworld开始 回顾c语言的socket 通信 一个简单的socket server 用telent测试 从helloworld 开始 先来回顾下c语言的,c语言的helloword程序如下 // main.c #include<stdio.h> int main() { prin…
从零开始用 Flask 搭建一个网站(二) 介绍了有关于数据库的运用,接下来我们在完善一下数据在前端以及前端到后端之间的交互.本节涉及到前端,因此也会讲解一下 jinja2 模板.jQuery.ajax 等用法. 下面我们来创建两个界面,一个可以新建 channel,并显示,另一个可以创建 integration,并且可以绑定一个之前创建的 channel. post2channel.html {% extends "base.html" %} {% import "boot…
let http=require("http"); //引入核心http模块 let fs=require("fs"); let mime={ '.js':'application/javascript', '.css':'text/css' } //创建一个函数,req代表客户端,res代表服务器可写流 let listener=(req,res)=>{ //res是可写流,有write和end if(req.url==="/"){ //…
一.超文本传输协议 Web服务器和浏览器通过HTTP协议在Internet上发送和接收消息.HTTP协议是一种请求-应答式的协议——客户端发送一个请求,服务器返回该请求的应答.HTTP协议使用可靠的TCP连接,默认端口是80.HTTP的第一个版本是HTTP/0.9,后来发展到了HTTP/1.0,现在最新的版本是HTTP/1.1.HTTP/1.1由 RFC 2616定义(pdf格式). 本文只简要介绍HTTP 1.1的相关知识,但应该足以让你理解Web服务器和浏览器发送的消息.如果你要了解更多的细…
前段日子一直在做公司的DNS调度程序,不过由于性能比较差,方案最终废弃掉了.两个半月心血,不想白白浪费掉,于是改了改,把商业秘密相关的部分去掉,变成了一个公共的DNS服务器.其实说的简单点,就是一个可以做DNS解析和应答的程序(废话,DNS服务器不就是干这个的).功能比较简单,只做了A地址和CNAME的解析,安全性不涉及,性能也没有测试过,因为本身是个玩具,测性能没有意义(理论上如果用pypy的话,水平一般的机器也能跑到1万以上的QPS).本程序多处借鉴了 isnowfy 同学的程序(相关博客:…
一.引言 在自学node.js的过程中有一个非常重要的框架,那就是Express.它是一个基于NodeJs http模块而编写的高层模块,弥补http模块的繁琐和不方便,能够快速开发http服务器.这里,就要用Express创建一个Web服务器,用来深入的理解这个框架,并熟悉创建Web服务器的过程. 二.核心概念--中间件 Express 是一个自身功能极简,完全是由路由和中间件构成一个的 web 开发框架:从本质上来说,一个 Express 应用就是在调用各种中间件. 中间件(Middlewa…
netty(2)---搭建一个简单服务器 说明:本篇博客是基于学习慕课网有关视频教学.效果:当用户访问:localhost:8088 后 服务器返回 "hello netty"; 一.服务端线程模型 下面的做法是服务端监听线程和 IO 线程分离,类似于 Reactor 的多线程模型,它的工作原理图如下(盗的图): 这里netty版本是4.1.25 <dependency> <groupId>io.netty</groupId> <artifac…
Express4.x API 译文 系列文章 Express4.x API (一):application (译) -- 完成 Express4.x API (二):request (译) -- 完成 Express4.x API (三):Response (译) -- 完成 Express4.x API (四):router (译) -- 完成 技术库更迭较快,很难使译文和官方的API保持同步,更何况更多的大神看英文和中文一样的流畅,不会花时间去翻译--,所以我们看到express中文网更多的…
原文连接:使用Java Socket手撸一个http服务器 作为一个java后端,提供http服务可以说是基本技能之一了,但是你真的了解http协议么?你知道知道如何手撸一个http服务器么?tomcat的底层是怎么支持http服务的呢?大名鼎鼎的Servlet又是什么东西呢,该怎么使用呢? 在初学java时,socket编程是逃不掉的一章:虽然在实际业务项目中,使用这个的可能性基本为0,本篇博文将主要介绍如何使用socket来实现一个简单的http服务器功能,提供常见的get/post请求支持…
陈硕 (giantchen AT gmail) blog.csdn.net/Solstice Muduo 全系列文章列表: http://blog.csdn.net/Solstice/category/779646.aspx 本文以一个 Sudoku Solver 为例,回顾了并发网络服务程序的多种设计方案,并介绍了使用 muduo 网络库编写多线程服务器的两种最常用手法.以往的例子展现了 Muduo 在编写单线程并发网络服务程序方面的能力与便捷性,今天我们看一看它在多线程方面的表现. 本文代码…
我始终觉得,天生的出身很重要,但后天的努力更加重要,所以如今的很多“科班”往往不如后天努力的“非科班”.所以,我们需要重新给“专业”和“专家”下一个定义:所谓专业,就是别人搞你不搞,这就是你的“专业”:你和别人同时搞,你比别人搞的好,就是“专家”. 说到http协议和http请求,很多人都知道,但是他们真的“知道”吗?我面试过很多求职者,一说到http协议,他们能滔滔不绝,然后我问他http协议的具体格式是啥样子的?很多人不清楚,不清楚就不清楚吧,他甚至能将http协议的头扯到html文档头部<…
作为后端开发人员,在实际的工作中我们会非常高频地使用到web服务器.而tomcat作为web服务器领域中举足轻重的一个web框架,又是不能不学习和了解的. tomcat其实是一个web框架,那么其内部是怎么实现的呢?如果不用tomcat我们能自己实现一个web服务器吗? 首先,tomcat内部的实现是非常复杂的,也有非常多的各类组件,我们在后续章节会深入地了解. 其次,本章我们将自己实现一个web服务器的. 下面我们就自己来实现一个看看.([注]:参考了<How tomcat works>这本…
本文是Writing WebSocket servers的中文文档,翻译自MDNWriting WebSocket servers.篇幅略长,个人能力有限难免有所错误,抛砖引玉共同进步. websocket服务器的本质 WebSocket 服务器简单来说就是一个遵循特殊协议监听服务器任意端口的tcp应用.搭建一个定制服务器的任务通常会让让人们感到害怕.然而基于实现一个简单的Websocket服务器没有那么麻烦. 一个WebSocket server可以使用任意的服务端编程语言来实现,只要该语言能…
介绍和背景 TCP编程是网络编程领域最有趣的部分之一.在Ubuntu环境中,我喜欢使用.NET Core进行TCP编程,并使用本机Ubuntu脚本与TCP服务器进行通信.以前,我在.NET框架本身写了一篇关于TCP服务器和客户端的文章.现在,.NET框架本身将是开源的.我想写一些关于他们之间的沟通渠道.基本上,我只是测试在新的.NET环境下工作的情况,而不是在旧的.NET框架环境中工作. 然而,在这篇文章中,我有一大堆的额外功能可供你使用.我将向您展示您将使用的方法来构建自己的TCP服务器,使用…
前言:刚开始学网络编程,都会先写一个客户端和服务端,不知道你们有没有试一下:再打开一下客户端,是连不上服务端的.还有一个问题不知道你们发现没:有时启服务器,会提示“Address already in use”,过一会就好了,想过为啥么?在这篇博客会解释这个问题. 但现实的服务器都会连很多客户端的,像阿里服务器等,所以这篇主要介绍如何实现并发服务器,主要通过三种方式:进程.线程和select函数来分别实现. 一.进程实现并发服务器 先说下什么是并发服务器吧?不是指有多个服务器同时运行,而是可以同…
一,项目题目:基于线程开发一个FTP服务器 二,项目要求: 基本要求: 1.用户加密认证   2.允许同时多用户登录   3.每个用户有自己的家目录 ,且只能访问自己的家目录   4.对用户进行磁盘配额,每个用户的可用空间不同   5.允许用户在ftp server上随意切换目录   6.允许用户查看当前目录下文件   7.允许上传和下载文件,保证文件一致性(md5)   8.文件传输过程中显示进度条   9.附加功能:支持文件的断点续传 扩展需求: 作业需求:   1.在之前开发的FTP基础上…
1.Node.js 创建的第一个应用 var http=require("http") http.createServer(function (req,res) { res.writeHead(200,{"Content-Type":"text/html;charset='utf8'"}) res.write("<head><meta charset='UTF-8'></head>") re…
使用HibernateTemplate进行增删改查操作 观前提示:本系列文章有关服务器以及后端程序这些概念,我写的全是自己的理解,并不一定正确,希望不要误人子弟.欢迎各位大佬来评论区提出问题或者是指出错误,分享宝贵经验.先谢谢了( ̄▽ ̄)"! 这次的废话留在文章末尾吧,断更了好久,直接进入正题! 本篇中主要用到的代码我都会在文章里贴出来 如果博主玩明白GitHub了的话,源码会上传到Github,贴出链接方便各位使用.不过我觉得各位还是找更有参考价值的文章吧,这个系列纯粹是我一个人写日记( ̄_ ̄…
Node.js是JavaScript基础上发展起来的语言,所以前端开发者应该天生就会一点.一般我们会用它来做CLI工具或者Web服务器,做Web服务器也有很多成熟的框架,比如Express和Koa.但是Express和Koa都是对Node.js原生API的封装,所以其实不借助任何框架,只用原生API我们也能写一个Web服务器出来.本文要讲的就是不借助框架,只用原生API怎么写一个Web服务器.因为在我的计划中,后面会写Express和Koa的源码解析,他们都是使用原生API来实现的.所以本文其实…
11-3. 为一个”模型定义”函数返回一个计算列 问题 想从”模型定义”函数里返回一个计算列 解决方案 假设我们有一个员工(Employee)实体,属性有: FirstName, LastName,和BirthDate, 如 Figure 11-3所示. Figure 11-3. An Employee entity with a few typical properties 我们想要创建一个”模型定义”函数,让它返回FirstName 和LastName 合并后的full name . 我们想…
本文介绍了如何在阿里云服务器上从零开始搭建nginx服务器.阿里云服务器(ECS)相信大家都不陌生,感兴趣的同学可以到http://www.aliyun.com/product/ecs去购买,或到体验馆去体验(半个月有效期).至于如何注册.管理ECS这里就不详细介绍了.因为官方文档已经写的很清楚了.如果还不清楚,打咨询电话询问. 现在假设你已经拥有了阿里云服务器,ip是139.128.33.11(假的,读者需要换成自己的ip地址).并且没有选择任何安装包.现在ECS是完全空的,除了必须的Linu…
syslog服务器可以用作一个网络中的日志监控中心,所有能够通过网络来发送日志的设施(包含了Linux或Windows服务器,路由器,交换机以及其他主机)都可以把日志发送给它. 通过设置一个syslog服务器,可以将不同设施/主机发送的日志,过滤和合并到一个独立的位置,这样使得你更容易地查看和获取重要的日志消息. rsyslog 作为标准的syslog守护进程,预装在了大多数的Linux发行版中.在客户端/服务器架构的配置下,rsyslog同时扮演了两种角色:1.作为一个syslog服务器,rs…
const http = require('http');//请求http.createServer(function(request, response){    /*createServer该函数用来创建一个HTTP服务器,并将 requestListener 作为 request 事件的监听函数    由于该方法属于http模块,使用前需要引入http模块 (http = require('http'))    http.createServer([requestListener])   …
在Linux中搭建一个ftp服务器,以供两个工作小组保管文件使用.禁用匿名.第一个小组使用ftp账号:ftp1,工作目录在:/var/ftp/ftp1:第二个小组使用ftp2,工作目录在:/var/ftp/ftp2. 两个小组互相不能访问各自的文件,需要限制用户不能离开自己的工作目录. [实现步骤] 1.检查安装vsftpd服务器 以root进入终端后(其他账户进入终端的可以用su root 输入密码后进入root 模式)之后,在终端命令窗口输入以下命令进行验证:# rpm –qa | grep…
作为一名网络管理员,您需要为您所需管理的每个网络设备存放用于管理的用户信息.但是网络设备通常只支持有限的用户管理功能.学习如何使用Linux上的一个外部RADIUS服务器来验证用户,具体来说是通过一个LDAP服务器进行验证,可以集中放置存储在LDAP服务器上并且由RADIUS服务器进行验证的用户信息,从而既可以减少用户管理上的管理开销,又可以使远程登录过程更加安全.数据安全作为现代系统中网络安全的一部分,与系统安全一样的重要,所以保护数据--确保提供机密性.完整性和可用性--对管理员来说至关重要…