华清远见嵌入式学习day23——广播、组播及数据库sqlite3

【1】抓包工具
    wireshark
    
    windows版本
    ubuntu:
        sudo apt-get install wireshark
        
    运行wireshark:
        sudo wireshark
    
    过滤:
        tcp.port == 8888

    练习抓包到 10:10
    
【2】    广播
广播的发送方: client.c
    1、创建用户数据报套接字
    2、缺省创建的套接字不允许广播数据包,需要设置属性
        setsockopt可以设置套接字属性
    3、 接收方地址指定为广播地址
    4、 指定端口信息
    5、 发送数据包

广播的接收方:类似于UDP server.c
    1、创建用户数据报套接字

    2、绑定IP地址(广播IP或0.0.0.0)和端口                  
        绑定的端口必须和发送方指定的端口相同
    3、等待接收数据
    
【3】组播
组播发送方
    1、创建用户数据报套接字
    2、接收方地址指定为组播地址
    3、指定端口信息
    4、发送数据包

接收方:
    1、创建用户数据报套接字
    2、加入多播组
    3、绑定IP地址(加入组的组播IP或0.0.0.0)和端口
        绑定的端口必须和发送方指定的端口相同
    4、 等待接收数据
    
    发送方只需要向组播地址上发送数据,那么加入进组播的所有IP都能收到数据;
    
    IP_ADD_MEMBERSHIP    将指定的IP加入多播组     struct ip_mreq
        struct ip_mreq
        252   {
        253     /* IP multicast address of group.  */ 
        254     struct in_addr imr_multiaddr;  //组播IP,224.0.0.1
        255 
        256     /* Local IP address of interface.  */
        257     struct in_addr imr_interface;  //自己的IP
        258   };
        1、代码编写(加入多播组)
        strcut ip_mreq mreq;
        mreq.imr_multiaddr = 224.0.0.1;
        mreq.imr_interface =  INADDR_ANY;
        
        2、setsockopt(sockfd,IPPROTO_IP,IP_ADD_MEMBERSHIP,x,x);
        
        3、绑定IP地址(组播IP)
    
【4】 UNIX域套接字
    
    用于本机间通信;
    
    #define UNIX_PATH_MAX    108

    struct sockaddr_un {
        sa_family_t sun_family;              //地址族(协议族)AF_UNIX 
        char        sun_path[UNIX_PATH_MAX]; // 用于通信的文件名
    };
    结构体赋值:
        struct sockaddr_un unixaddr;
        unixaddr.sun_family = AF_UNIX;
        strcpy(unixaddr.sun_path,"myunixsock");
    
    注意:每次通信前要删除用于通信的文件"myunixsock";
    
【5】sqlite3
    安装方式:
    1. sudo dpkg -i *.deb
    2. 在线安装
        1、设置能够上网
        2、更新更新源
        # apt-get update
        3、安装软件及开发环境
        # apt-get install sqlite3        --->sqlite3数据库软件
        # apt-get install libsqlite3-dev    --->sqlite3数据库开发支持库
        # apt-get install sqlite3-doc        --->sqlite3数据库说明文档
        --------------------------------
        
        # apt-get install sqlitebrowser        --->sqlite3数据库操作软件
        
    1、 两种方式操作数据库
    
        打开数据库  sqlite3 xx.db
        a. 命令(两种)
            系统命令:
                .help   查看帮助文档
                .quit   退出
                .tables 查看库中所有的表
                .schema <table_name> 查看表结构
            
            SQL命令:
                SQL命令:以 ; 结尾;
            1、创建表
                create table stu(id int,name char,score float);
                             表名(字段名 类型);
                    字符串:char string text
                    小数:float real
                    不支持严格的类型检查的;
                    .tables
                    .schema stu 
                    
                create table stu(id int primary key, name char, score float);
                注:把id字段设置为主键(在表中唯一);
                
            2、    删除表
                drop table stu;
    
            3、向表中添加记录
                insert into stu values(1,'zhangsan',89.9);    //插入整条数据
                缺省插入;只插入某些字段;
                insert into stu(id,name) values(4,'xiaoming');    //只插入部分字段
                
            4、 查询表中所有记录
                select  *  from  stu;
                
                按指定条件查找
                select * from  stu where score=89.1;
                
                select * from stu where name='LiSi' and id=2; //同时满足条件1和2
                select * from stu where name='LiSi' or id=3;  //同时满足条件1或者2
                
                select score from stu where name='LiSi' or id=3; //满足条件的某列         
                
                select name,score from stu where name='LiSi' or id=3;
                
                select * from stu limit n;   //只查询前n条记录
                select * from stu order by id desc; //按id从大到小进行排序

            5、 按指定条件删除表中记录
                delete  from  <table_name>  where  <expression>
                delete from stu where id=2;         //按条件删除记录
                delete from stu;  //删除表中所有记录
                
            6、更新:
                update stu set id=4,score=99.9 where id=5;
                
                id name score 
            7、增加字段:
                alter table stu add column <字段名> <类型>; //增加一个无初始值字段
                alter table stu add column <字段名> <类型> default value; //增加一个有初始值字段
                    
            8、删除字段        
                1)create table student as select id,name,score from stu; 
                2) drop table stu;
                3) alter table student rename to stu;
        
        b.代码操作
        使用的都是统一的一个接口
            select 
            create 
            drop 
            insert

sqlite3API接口查询地址:
    https://www.sqlite.org/c3ref/sqlite3.html    

猜你喜欢

转载自blog.csdn.net/UemTuBXuR/article/details/89302100