linux c语言
文章平均质量分 73
Reage--
这个作者很懒,什么都没留下…
展开
-
自己动手写web服务器一(浏览器的访问信息)
要协议一个web服务器,需要了解http协议,下面我们来看一下当浏览器请求网张的时候向web服务器发送的数据,我使用的是ubuntu 中telent展现一个下过程。 我需要一个简单的网站来演示一下,我装了一个apache。来完成成这个过程。下面为过程展示。其实,访问一个网站就是浏览器web服务器指定端口发送信息,然后,web服务器向浏览器发送网页的内容,1。使用tel原创 2012-10-15 17:06:06 · 5239 阅读 · 0 评论 -
C语言插件开发模式
以前总是不明白为什么不同的模块是相互独立的编译,相互之间不存在的调用关系, 怎么做到在使用的时候加载不使用的时候卸载掉? 现在总算是明白了。其实就是将一个功能做成一个动态库,在window中叫dll,在Unix/Linux中叫做so。通过配置在运行的时候,在运行的时候,通过一些特殊的函数对dll或者so进行操作。找到函数的地址,调用函数。在使用函数的时候找函数,不是使用的时候释放就可...原创 2013-02-24 00:06:17 · 4720 阅读 · 6 评论 -
sizeof错误的认识(sizeof是关键字为什么可以加括号)
下面仅为个人理解,编译器中验证外,没有任何理论依靠,若有错误请指出。 首先,sizeof是一个关键字并不是一个函数。或许你有疑问,既然是一个关键字,为什么出现sizeof的时候后面操作对象都加上括号哪?原因如下。1. sizeof int ,结果为4,说明 sizeof说明他不是一个函数。2.siezof(int )是关键字,为什么分开标记,比方 int i;i原创 2012-09-06 18:42:42 · 9147 阅读 · 7 评论 -
自己动手写web服务器之虚拟端口支持
为什么需要支持虚拟端口? 如果不支持虚拟端口,每一个ip只能对应一个网站。再对应别的域名就需要加端口了。支持虚拟端口的原理?? 首先,我们知道,当多个域名与一个ip相对。DNS只能提供ip地址,无法提供端口号。所以web browser无法知道多个域名与一个ip对应的时候那个域名应该使用哪个端口。当用户不能提供端口web browser只能使用80默认端口了。原创 2013-03-26 17:30:34 · 2256 阅读 · 0 评论 -
C语言正则表达式的几个函数
1.int regcomp (regex_t *compiled, const char *pattern, int cflags) 这个函数把指定的正则表达式pattern编译成一种特定的数据格式compiled,这样可以使匹配更有效。函数regexec 会使用这个数据在目标文本串中进行模式匹配。执行成功返回0。 regex_t 是一个结构体数据类型,用来存放编转载 2013-03-27 15:45:41 · 1755 阅读 · 0 评论 -
基于epoll实现的一个简单web服务器
本文使用epoll建立一个简单的web服务器。通过epoll实现对过个端口的管理,非阻塞的数据发送。(注意本文中的使用没有错,但是在实际应用中是无法处理同一时间超过五个以上的链接,稍后会写出可以处理大批量的链接的代码。)使用到数据结构typedef union epoll_data { void *ptr; int fd;原创 2013-03-17 09:39:39 · 2932 阅读 · 0 评论 -
web服务器对url中的相对路径的处理("./", "//","../")
本次为了方便展示和调试,并没有将代买写入到真实的运行环境,而是单独写了一个test程序,使用的思路主要是回溯。首先记录本次的开始位置,情况一:如果本次得到内容时“./”,回溯到本次开始匹配的位置即可。情况二:如果本次得到的内容是"/",回溯到本次开始匹配的位置即可。情况三: 如果本次的到的内容时“../",首先回溯到本次开始匹配的位置,并且删除上一级目录其他情况: 直接写入本次原创 2013-05-13 21:39:43 · 4961 阅读 · 0 评论 -
“第一次亲密接触”--数据结构,迷宫的生成、走通(非递归)
也不知道说什么?直接看代码吧,之前上大二的时候做的一个数据结构的课程设计,按照老师给的做的。亮点就是迷宫自动生成,路线标注、输出步骤。在redhat中测试没有问题。 #include #include #include #include #define AMAX 200#define MAZE 2#define WAY 1//maze's size原创 2012-09-20 13:04:32 · 1279 阅读 · 0 评论 -
自己动手写web服务器二(处理get请求)
主要实现功能,处理浏览器的get请求信息,发送网页文件。处理404、403等错误。1.实现绑定本机机器的1024端口作为ReageWeb服务提供网页服务的端口。(避免与机器上装有web服务器产生端口冲突)2.实现get获取网页方式。3.实现index.html作为网站的首页面目前程序在ubuntu12.04中运行成功,没有出现错误的。程序的下载地址:包含源文件、网站首页、m原创 2012-11-21 13:34:57 · 5559 阅读 · 3 评论 -
自己动手写web服务器四(web服务器是如何通过压缩数据,web服务器的gzip模块的实现)
web服务器为什么要压缩数据? web服务器如果将要发送的网页经过压缩后,待发送的数据将会减少一半左右,将会节省很大一部分的带宽,从而提高自己的并发量和减少网页传输时间。加快网页的浏览。 是不是web服务器开启压缩一定会提高性能? 不一定的,因为每次压缩,都需要对文件进行压缩算法。将会消耗一定cpu和I/O的。因此,当文件较小时没有必要开启压缩功能原创 2013-01-18 16:01:19 · 6182 阅读 · 0 评论 -
linux c网络学习总结2(IP地址相关的操作)
AF_INET Stream Data Structuresstruct sockaddr_in { short int sin_family; //使用的协议簇; 值为AF_INET unsigned short int sin_port; //要使用的端口号,范围是从0 到65535,普通程序使用从1原创 2013-01-16 10:54:44 · 1945 阅读 · 0 评论 -
gzip头部格式
注意两个加好表示一个字节(8位)gzip头的格式:+---+---+---+---+---+---+---+---+---+---+|ID1|ID2|CM |FLG| MTIME |XFL|OS | (more-->)+---+---+---+---+---+---+---+---+---+---+(if FLG.FEXTRA set)+---+---+======原创 2013-01-16 15:48:42 · 15441 阅读 · 7 评论 -
linux文件操作二(文件定位和状态函数)
off_t lseek(int fildes, off_t offset, int whence);include: unistd.h, sys/types.hresult:失败返回-1,成功返回设置的位置description:对文件描述符fildes的读写位置的进行设置。parameter: fildes:打开的文件句柄 offset:指原创 2012-10-17 13:45:48 · 1027 阅读 · 0 评论 -
C语言数组清空的几种方法比较
一下结果是在ubuntu12.04中测试的到的,机器速度比较慢,我觉这有这样才可以最大化的发现每一种方法所用的时间。更加明确的看到各种方法的时间差。#define MAX 1024方法一使用时间:94sfor( k = 0 ; k for( i = 0 ; ifor( j = 0;j a[i][j] = 0;方法二原创 2012-09-23 22:38:30 · 25517 阅读 · 7 评论 -
c语言安全编码建议一
在编程一个良好的习惯可以帮你避免很多潜在的bug,是你的程序更加的健壮。很多的问题都是伴随一些平时不注意的细节。一下是在C语言编写代码中应该注意的事项。用const限定不可修改的变量不要在子作用域中复用变量.不要使用区别不明显的标识符。(数字1与小写字符l,数字0与小写字符o,数字2与自负z等)不要在一个生命中声明超过一个变量;(char *p, c;容易将c也看成指针型的变量)将不原创 2012-10-22 23:29:46 · 1975 阅读 · 4 评论 -
数据结构学习三(一个简单的队列实现)
队列(queue)是一种先进先出(first in first out,简称FIFO )线性表。它只允许在一端插入,在一端删除元素。队列像一个单行道的路,先进去的一定先出来。 比如在队列中依次放入 a1,a2,a3,a4(a1 先放入) 从队列中取出元素的顺序 a4,a3,a2,a1(最先取出) 代码如下:(本代码只经过本来的简单测试,可能存在问题。请相信自己的能力,敢于质原创 2012-10-30 20:19:12 · 1000 阅读 · 0 评论 -
a[i][j]与a[j][i]性能差别的原因
一下内容仅是个人理解,有错误之处,望大家谅解和指正。a[i][j]使用时间:94sfor( k = 0 ; k for( i = 0 ; ifor( j = 0;j a[i][j] = 0;a[j][i]使用时间:488sfor( k = 0 ; k for( i = 0 ; ifor( j = 0;j a[j][i] = 0;原创 2012-09-25 12:15:43 · 4610 阅读 · 9 评论 -
linux C语言网络学习总结1
对于网络程序,我们一般分为两类:客户端、服务器端。服务端程序流程:1.使用socket设定使用的协议和通信方式(TCP,UDP)2.使用bind设定提供服务机器的地址,并且与socket关联(确定协议类型和通信方式)3.使用listen开启端口,并且设定等待队列的大小4.使用accept等待客户端的连接,并且返回建立连接的套接字5.使用read在(读数据)和write(写数原创 2012-11-19 20:48:41 · 1048 阅读 · 0 评论 -
通过测试浏览器对网页中元素请求,提出减少浏览器请求的建议
最近一直在学习linux网络编程这一块的内容,自己做了一个简单web服务器,以前无法确切的了解web浏览器访问网页的的请求过程。现在有着样的条件了,所以就自己实现一下看看过程了。浏览器展示一个网页的过程:(不涉及本地缓存,假设本地没有缓存)浏览器向服务发送请求,请求一个页面。服务器响应请求,向浏览器发送页面。浏览器加载页面,如果有外部文件,转向4步,没有结束原创 2012-12-09 17:01:21 · 2475 阅读 · 0 评论 -
自己动手写web服务器三(web服务器是如何处理浏览器取消的请求的)
对于web服务器,要尽量的减小服务器的负担。如果,浏览器已经取消请求连接,web服务器就不应该再向浏览器发送页面的数据了。我本次是测试web服务器是如何知道浏览器已经取消了请求哪? 如果浏览器取消请求,web服务器继续向浏览器发送请求,将会造成web服务器的崩溃。在高级语言中种称之为异常也叫做异常中断,但是在C语言中没有。可是,C语言中的信号量提供了类似异常的功能。但是很多书上对原创 2012-12-10 18:22:44 · 5005 阅读 · 1 评论