python socket 实现的简单http服务器】的更多相关文章

预备知识: 关于http 协议的基础请参考这里. 关于socket 基础函数请参考这里. 关于python 网络编程基础请参考这里. 一.python socket 实现的简单http服务器   废话不多说,前面实现过使用linux c 或者python 充当客户端来获取http 响应,也利用muduo库实现过一个简易http服务器,现在来实现一个python版 的简易http服务器,代码改编自 http://www.cnblogs.com/vamei/ and http://www.liaox…
本来是想实现ssl连接的,但是弄了好久都不成功,就索性不做了,等以后有能力再做了.所以这一小节就是本次的最后一节了.就简单的说几个注意点. 1.加个配置文件 使用单例模式,使用一个类,该类保存一些信息,例如一个配置类的一个属性为PAGE404的字符串,该字符串保存一个文件地址,然后我们的Page_404函数就可以用access判断PAGE404这个字符串对应的文件是否存在,如果存在那么如果是404页面那么就cat这个文件,而不是默认的404函数里面的页面.还有个端口什么的都是通过一个类似宏定义一…
目标是写一个python的p2p聊天的项目,这里先说一下python socket的基础课程 一.Python Socket 基础课程 Socket就是套接字,作为BSD UNIX的进程通信机制,取后一种意思.通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,可以用来实现不同虚拟机或不同计算机之间的通信.在Internet上的主机一 般运行了多个服务软件,同时提供几种服务.每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务.Socket正如其…
这一次的Socket系列准备讲Web服务器.就是编写一个简单的Web服务器,具体怎么做呢?我也不是很清楚流程,所以我找来了一个开源的小的Web服务器--tinyhttpd.这个服务器才500多行的代码,使用C语言.这一小节就不讲别的内容了.就对这个程序进行一些注释和讲解了. 主函数: int main(void) { ; u_short port = ; ; struct sockaddr_in client_name; int client_name_len = sizeof(client_n…
什么是socket? socket可以看成是用户进程与内核网络协议栈的编程接口.是一套api函数. socket不仅可以用于本机的进程间通信,还可以用于网络上不同主机间的进程间通信. 工业上使用的为tcp ip四层模型,是OSI七层模型的简化,如下图所示: tcp ip协议是每一层与每一层的通信. IPV4套接字地质结构: IPV4套接字地址结构通常也称为“网际套接字地址结构”,它以socketaddr_in命名,定义在头文件<netinet/in.h>中,如下所示: struct socke…
一.如何使用Python实现一个返回固定页面的Web Server 1.使用socket创建一个TCP Server 2.接受来自浏览器的TCP链接,并接收HTTP请求 3.返回固定响应数据给浏览器 缺陷:这种简单的web server是阻塞的,同时只能处理一个请求. 代码如下: import socket def handle_request(new_socket): # 接收请求 recv_msg = new_socket.recv(1024) print(recv_msg) # 响应数据…
上一小节通过阅读开源的Web服务器--tinyhttpd.大概知道了一次交互的请求信息和应答信息的具体过程.接下来我就自己简单的实现一个Web服务器. 下面这个程序只是实现一个简单的框架出来.这次先实现能够Accept客户端的请求. 简单创建web服务器 webserver.h #include <iostream> #include <string> #include <string.h> #include <stdio.h> #include <s…
写在前面的一些P话: 在公司网站开发中,我们往往借助于Flask.Django等网站开发框架去提高网站开发效率.那么在面试后端开发工程师的时候,面试官可能就会问到网站开发的底层原理是什么? 我们不止仅仅会使用框架开发,还需要知其所以然 今天领大家不借助任何框架的基础上手动搭建一个资料查找网站点击此处找管理员免费领取资料 主要内容 TCP网络模型 正则表达式匹配资源 如何编写一个tcp server服务端 开始我们的代码,先是导入模块 如何实现一个静态的服务器呢? 可以使用Python自带的一个通…
上一小节已经实现了浏览器发送请求,然后服务器给出应答信息,然后浏览器显示出服务器发送过来的网页.一切看起来都是那么的美好.这一小节就准备实现可以根据地址栏url的不同来返回指定的网页.目前还不考虑带参数的问题. stat函数 #include <sys/stat.h> int stat(const char *restrict pathname,struct stat * restrict buf); int fstat(int filedes,struct stat * buf); int…
上一小节已经实现了对图片的传输,接下来就是判断文件是否为js,css,png等格式.我们增加一个函数用于判断格式 int WebServer::get_filetype(char *type,char *path)//用于判断该url指向文件的后缀 { if(strstr(path,".html")) strcpy(type,"text/html"); else if(strstr(path,".gif")) strcpy(type,"…