zoukankan      html  css  js  c++  java
  • 2018-2019-1 20165220 《信息安全系统设计基础》第八周学习总结

    教材知识点总结

    1.并发程序有三种方法

    a.线程:线程是运行在单一进程上下文中的逻辑流,由内核进行调度

    b.进程:每个逻辑流都是一个进程,由内核来调度和维护。

    c..I/O多路复用:在这种形式中,应用程序在一个进程的上下文中显式地调度它们自己的逻辑流。逻辑流被模型化为状态机。因为程序是一个单独的进程,所以所有的流都共享同一个地址空间。

    2.构造并发服务器的自然方法就是,在父进程中接受客户端连接请求,然后创建一个新的子进程来为每个新客户端提供服务。

    3.因为父子进程中的已连接描述符都指向同一个文件表表项,所以父进程关闭它的已连接描述符的拷贝是至关重要的,而且由此引起的存储器泄露将最终消耗尽可用的存储器,使系统崩溃。

    4.客户端-服务器编程模型

    a.一个应用是由一个服务器进程和一个或多个客户端进程组成

    b.服务器进程 -> 管理某种资源 -> 通过操作这种资源来为它的客户端提供某种服务

    5.全球IP因特网

    a.TCP/IP协议族

    b.因特网的客户端和服务器混合使用套接字接口函数和UnixI/O函数进行通信

    6.

    每个网络应用都是基于客户端一服务器模型的。一个应用是由一个服务器进程和一个或者多个客户端进程组成。服务器管理某种资源,并且通过操作这种资源来为它的客户端提供某种服务。

    客户端一服务器模型中的基本操作是事务,一个客户端-服务器由四步组成:

    a.当一个客户端需要服务时,它向服务器发送一个请求,发起一个事务。

    b.服务器收到请求后,解释它,并以适当的方式操作它的资源。

    c.服务器给客户端发送一个响应,并等待下一个请求。

    d.客户端收到响应并处理它。

    7.

    socket 函数

    客户端和服务器使用 socket 函数来创建一个套接字描述符

    connect 函数

    客户端通过调用 connect 函数来建立和服务器的连接。

    open_clientfd 函数

    open_clientfd 函数和运行在主机 hostname 上的服务器建立一个连接,并在知名端口 port 上监听连接请求。它返回一个打开的套接宇描述符,该描述符准备好了,可以用 Unix I/O 函数做输入和输出。

    ** bind 函数**

    bind、 listen 和 accept 被服务器用来和客户端建立连接。

    加分项目——pwd的实现

    首先通过man 命令了解了一下pwd的用法

    相关代码

    #include<stdio.h>  
    #include<sys/stat.h>  
    #include<dirent.h>  
    #include<stdlib.h>  
    #include<string.h>  
    #include<sys/types.h>  
    void printpath();  
    char *inode_to_name(int);  
    int getinode(char *);  
    int main()  
    {  
        printpath();  
        putchar('
    ');  
        return ;  
    }  
    void printpath()  
    {  
        int inode,up_inode;  
        char *str;  
        inode = getinode(".");  
        up_inode = getinode("..");  
        chdir("..");  
        str = inode_to_name(inode);  
        if(inode == up_inode) {  
        //  printf("/%s",str);  
            return;  
        }  
        printpath();  
        printf("/%s",str);  
    }  
    int getinode(char *str)  
    {  
        struct stat st;  
        if(stat(str,&st) == -1){  
            perror(str);  
            exit(-1);  
        }  
        return st.st_ino;  
    }  
    char *inode_to_name(int inode)  
    {  
        char *str;  
        DIR *dirp;  
        struct dirent *dirt;  
        if((dirp = opendir(".")) == NULL){  
            perror(".");  
            exit(-1);  
        }  
        while((dirt = readdir(dirp)) != NULL)  
        {  
            if(dirt->d_ino == inode){  
                str = (char *)malloc(strlen(dirt->d_name)*sizeof(char));  
                strcpy(str,dirt->d_name);  
                return str;  
            }  
        }  
        perror(".");  
        exit(-1);  
    }

    运行结果:

    总结:pwd命令的作用是查看当前所在的工作路径。

  • 相关阅读:
    植物大战僵尸英文原版
    2020-5-13递归练习 六人参加竞赛
    2020-5-1递归练习
    java当脚本用。QQ表白轰炸机
    面向实战---VUE项目的文件加载顺序,或者加载流程,以及index.html,main.js,app.vue的区别
    CSS多个view随机分布,不重叠,如何实现呢?
    vite项目才踩坑日志1
    css属性之clip-path
    纯CSS3实现的阳光海鸥沙滩遮阳伞和比基尼美女风景动画效果源码
    TP5 中使用wherein 进行查询,太慢了,怎么优化?
  • 原文地址:https://www.cnblogs.com/brs6666/p/10017998.html
Copyright © 2011-2022 走看看