网络编程(2)

项目调试

$./xhttpd /home/itcase/dir
GET /hello.c http/1.1    回车两次

改配置文件
    xhttpd -> xhttpd1 三个
出错(服务器程序7*24不当机)
    通过send_err发送到页面
    用define定义一个错误日志 do{}while(0)

缓冲区
    行缓冲:
        缓冲区的刷新,依赖换行标记。\n \r\n     标准输出缓冲区 借助fflus(stdout)刷新
    全缓冲:
        缓冲区的刷新,依赖于文件结束标记EOF。     用户缓冲区、内核默认文件读写缓冲区。
    无缓冲:
        只要缓冲区有内容,立即刷新到屏幕。        标准错误缓冲区。
        
目录的处理:
    1.判断 argc != 2
    2.chdir() 工作目录切换
    3.fget读取http首行。    GET / http/1.1        GET /hello.c http/1.1
    4.拆分sscanf("%[^ ]...", )    单独判断 /  ./ ../
        解码操作 --- 实际在 资源目录中存储文件名
    5.stat 判断是文件还是目录
    6.分支语句
        1)文件
            根据文件后缀名,获取类型、fopen、写http header、写文件内容
        2)目录 ----父级目录和子级目录之间,两次访问。从http请求出发,没有从属关系。
            scandir(目录名,(传出)结构体指针数组的地址,过滤器(NULL), 排序方法);
            遍历该目录下的所有目录项(子文件、目录内容),形成列表展示。arr[i]->d_name
            写http header、html页面 -> 显示目录的列表项
            注意 . 和 .. 操作
            
中文编码 主要是汉字和一些特殊符号
    浏览器中选择utf-8
    $ unicode 学     输出
    $man ASCII
/*
这里的内容是处理%20之类的东西!是“解码”过程。
%20 URT编码中的‘ ’(space)
*/
static void strdecode(char *to, char *from)
{
    for(; *from != '\0'; ++to, ++from)
    {
        //...
    }
}

怎样看代码:
shift+k:进man配置
catgs:Linux操作系统默认一个代码查看工具
    sudo apt-get install ctages
    ctags --help
    步骤:
        1.建立源码之间的组织关系:
            ctags ./*.c -R 生成tags文件。组织当前项目之间的模板调用关系。
            在源码内部,使用Ctrl-p 直接在源码所在的目录位置生成 tags。
        2.光标移到待查看的函数名上,使用Ctrl-]跳转到函数定义位置。
        3.Ctrl-T 跳回到跳转起始位置。
        4.Ctrl-o 查看当前项目 包含的模块列表。(多少个.c文件等等)
        5.F4查看模块内的函数列表(模块有几个函数,函数的作用)

类 xinetd 服务器:
    1.守护进程:fork()子进程 父exit(); 子setsid()创建会话。 关闭文件描述符。 修改文件权限。
    2.main { while(1){...} }
    3.socket(); bind、listen、setsockopt();端口复用。    
    端口的获取:1.对应的配置文件。其中存储port
                2.写死。2222
                3.参数传递:提示用户输入。命令号参数
    4.epoll、select、poll监听客户端的连接。(高并发才添加)
    5.cfd = accpet() 创建一个用于通信fd(套接字)
    6.创建一个进程、线程(线程更好点,资源节省,linux下相差不大)。
        pthread_create();分离态。detach(); 子线程 主控函数中 浏览器通信
    7.处理浏览器请求。xttpd的功能。
   

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值