【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