本周学习内容:网络编程
网络体系结构:
OSI体系结构、TCP/IP体系结构
OSI体系结构 | OSI网络模型 | 作用 |
7 | 应用层 | 解决进程间通过交互实现特定的网路应用功能 |
6 | 表示层 | |
5 | 会话层 | |
4 | 传输层 | 解决进程间网络数据传输问题 |
3 | 网络层 | 解决数据在不同网络之间进行传输 |
2 | 数据链路层 | 解决分组数据报在链路上的传输 |
1 | 物理层 | 解决用何种信号来传输比特流 |
TCP/IP体系结构 | TCP/IP网络模型 |
4 | 应用层 |
3 | 传输层 |
2 | 网络层 |
1 | 网络接口层 |
地址
MAC地址 、ip地址(ipv4)
mac地址有6字节,前3字节由厂商申请获取,每个厂商不同,后3个字节,厂商分配
ip地址就是在网络层对主机的编号 ,由于mac地址不具备区分不同网络,所以通过ip地址来区分不同网络,以及网络中的不同主机
ip地址 = 网络地址 + 主机地址
( 网络地址:因特网上,每个网络的编号,主机地址:一个网络中,每个主机的编号)
为了方便查看IPv4地址,对32比特位的ipv4地址,采用点分十进制来表示 ,每个字节用一个十进制数来表示,字节与字节之前 使用 . 来分开 。
ip地址分类
有 A ~ E 五类地址、划分子网、无分类编址
A ~ E 五类地址:点分十进制表示法中第一个数 0~127(A) 128~191(B) 192~223(C) 224~239(D) 240~255(E)
传输层协议:
UDP协议 --- 用户数据报协议 ----- 不可靠
TCP协议 --- 传输控制协议 ----可靠
UDP通信 | 相关函数 |
创建套接字(文件) | socket() |
指定(绑定)本地网络信息 | bind() |
进行通信,发送数据 | sendto() |
进行通信,接收数据 | recvfrom() |
关闭套接字 | close() |
TCP客户端 | 相关函数 |
创建套接字(选择进程通信的协议) | socke() |
绑定套接字(对进程通信加载本地网络信息,进行用什么网络信息进行通信) | bind() |
请求和对方建立连接 | connect() |
发送数据,接收数据 | read()、write()、send()、recv() |
结束通信,连接断开,关闭套接字 | close() |
TCP服务端 | 相关函数 |
创建套接字 | socket() |
绑定套接字 | bind() |
监听套接字(ip、port)监听是否有连接请求,等待连接 | listen() |
接收客户端连接 | accept() |
发送数据、接收数据 | read(),write() |
关闭套接字 | close() |
服务器模型
循环服务器模型 、并发服务器模型
IO模型
阻塞IO 、非阻塞IO 、IO多路复用(重点) 、异步通知
TCP建立连接与断开连接
建立函数三次握手,断开连接四次挥手
数据库sqlite3
数据库文件:按照一定的方式对数据进行归纳存储(已表的形式存储),数据库就是表的集合,表就是数据的集合,操作就是要操作表
大型数据库:DB2(IBM),ORACLE
中型数据库:MySql、Sql server
小型数据库
嵌入式数据库:sqlite、firebird
打开数据库文件
sqlite3 数据库文件名.db,表示创建或打开某个数据库文件
数据库命令
数据库命令都是以 . 开头
.open 数据库文件.db ------打开数据库文件
.quit-----表示退出当前数据库管理工具
.table----表示列出当前打开的数据库文件中所有的表
.database---表示列出当前打开的数据库文件
.schema---表示列出查看的表的对应结构(有哪几项,每一项是什么)
数据库语句------就是操作数据库表的方式
表操作都是以 ; 作为结束
相关命令 | |
创建表 | create table 表名字 |
删除表 | drop table 表名字 |
添加数据 | insert into 表名 values(字段1值,字段2值,字段3值,字段4值,.....) |
查找数据 | select 字段名1,字段名2 from 表名 where 条件 |
修改数据 | update 表名 set 字段名=值 where 条件 |
删除数据 | delete from 表名 where 条件 |
在c文件中调用数据库命令:sqlite3_exec
个人总结:
本周学习内容较为繁琐,个人掌握程度不是太熟练,还需多加练习。对于通过网络进行通信,下载上传文件的操作已经基本能独立完成,数据库的各类操作不熟练还得通过表格查找。本周涉及的函数或命令较多目前只能看到函数大多数知道用法,而很多函数无法实现自己背出来。所以整体来说差得还挺多,还得继续努力。