linux(十)

回顾:
        多进程的问题:数据共享。
        多进程的问题:进程的上下文环境(context)
                      文件描述符号是整数以及对应上下文环境
        多进程的问题:上下文环境共享

一.SELECT TCP服务器编程模式
    1.select函数
        int select(
            int fds,//建议是监控的文件描述符号的最大值+1
            fd_set *readfds,//读文件描述符号集合
                                            //该参数既是输入,也是输出
                                            //输入:被监控的描述符号
                                            //输出:有数据的描述符号
            fd_set *writefds,
            fd_set *errfds,
            struct timeval*timeout);//指定阻塞时间限制
                                                            //为NULL,永久
        返回:
                >0:发生改变的文件描述符号个数
                =0:时间限制过期
             =-1:异常                                                         
    2.IO能否发出信号?
            异步IO就是通过信号工作.
    3.应用使用select
    4.使用select实现TCP的多客户连接与处理
    5.poll模式
        int poll(
                struct pollfd *fds,//监控的描述符号
                int nfds,//监控的描述符号的个数
                int timeout );  //阻塞超时

二.Socket选项设置
        1.socket有哪些选项可以设置
                    ARP
                     |
                    IP
                     |
        |-----------------|
        UDP                  TCP             
        通用选项:
                SOL_SOCKET  
                        SO_BROADCAST        广播
                        SO_RCVBUF               描述符号的缓冲的大小
                        SO_SNDBUF               描述符号的缓冲的大小
                        SO_REUSEADDR        地址反复绑定
                        SO_TYPE                 描述符号类型SOCK_STREAM SOCK_DGRAM?
        ICMP选项
                IPPTOTO_ICMP
                        ICMP_FILTER
        IP选项(干预系统生成IP头)
                IPPROTO_IP
                        ......
                        ......
        UDP选项
                IPPROTO_UDP
                        ......

        TCP选项               
                IPPROTO_TCP
                        ......                      
        setsockopt设置选项
        getsockopt获取选项
案例:
        判定一个socket的数据类型AF_INET:SOCK_STREAM   SOCK_DGRAM SOCK_RAW

案例:
        使用选项进行数据广播.
        cast_A发送
                建立socket
                设置广播选项
                发送数据(广播方式发送)

        case_B接收
                建立socket
                设置地址可重用选项
                绑定地址
                接收数据            

三.OOB数据(TCP)        
        优先数据
        send(,MSG_OOB);
        recv(,MSG_OOB);
案例:
        oob_server.c
                    recv    MSG_OOB
        oob_client.c    
                    send    MSG_OOB

        1.OOB数据只能一个字符
        2.普通数据使用一般方式接收与发送,OOB数据使用MSG_OOB接收与发送
        3.一个数据使用MSG_OOB,则最后一个是OOB,其他非OOB数据
        4.问题:OOB数据是优先数据。优先体现在什么地方?

四.HTTP协议以及应用                                                
    1.HTTP协议版本HTTP1.0 HTTP1.1   
    2.HTTP是应用协议
    3.HTTP协议分成:
                请求协议
                响应协议
    4.请求协议的格式:
            请求行(请求方法 请求资源 协议版本)  
            请求体(请求头:请求值)
            空行
            数据(querystring:key=value&key=value)
    5.响应协议的格式
            响应行(协议版本 响应码 响应码的文本描述)
            响应体(响应头: 响应值)
            空行
            数据(普通数据/分块数据)

        1XX     正在处理
        2XX     响应成功200
        3XX     继续处理
        4XX     客户错误
        5XX     服务器错误
五.ioctl函数
        实现ifconfig工具

总结:
        重点:
                select
                广播

        了解:
                OOB数据
                HTTP协议

        应用:
                独立编写TCP服务器端的select模式
                编写广播
                能够请求一个网页,并且解析响应
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值