int recvbuflen;
int len = sizeof(int);
getsockopt(sock_fd,SOL_SOCKET,SO_RCVBUF,&recvbuflen,&len);
printf("recvbuflen: %d\n",recvbuflen);
2.unix域套接字
套接字地址结构不同
创建套接字的时候使用的是AF_UNX //AF_UNIX=PF_UNIX=AF_LOCAL=PF_LOCAL
3.数据库:下面几种都是关系型数据库
大型数据库:oracle db2
中型数据库:sqlserver mysql
小型微型数据库:sqlite
在互联网比较流行的非关系型数据库:redis mongodb
数据库---> 多个表 ---> 多条记录 --->多个字段
4.掌握基本的数据库操作
sqlite3基本操作:
.tables //显示表
.schema//显示所有表的详情信息
.q(.exit) //退出
create table st(字段名 类型, 字段名 类型); 创建表
create table st(age integer,name text);
delete from st ; 删除记录
delete from st where age<25;
insert into st values(38,"wang11"); 插入
drop table st; 删除表
select * from st;子查询
update st set age=30 where name="wang"; //更新表
alter table st add column grade integer; //添加字段
create table st(name text primary key,id text);//创建主键,唯一的标识一行
代码中这样封装sql语句:
sprintf(buf,"select * from st where name = '%s' and passwd = '%s'",name,passwd);
项目:
在线英语词典翻译
功能描述:客户端通过命令调用服务器的相应服务
注册:客户端需要注册一个新用户 新的用户数据放到sqlite数据库
用户登陆:服务器接收到客户端的登录请求,到数据库中查询该用户是否存在,并返回结果
查询单词:客户端传一个单词给服务器,服务器到文件中去查询这个单词
查询到的单词要保存到数据库中
查询历史:以前查询了那些单词,返回给客户端
需要两个表:
用户表user:哪些用户可以使用服务器
历史记录表record:保存查询了那些单词 (选择做)
server:
注册用户:通信的结构体采用MSG,将用户数据插入到表user中
用户登陆: 收到MSG,服务器根据MSG中的用户信息到标中查询
将查询结果返回给客户端
查询单词:用户登陆成功后才能做
服务器到文件中去查询,查询的结果返回给用户
查询成功,将查询的单词加到表record中
查询历史:到表record中去查询该用户查询了那些单词 (选择做)
查询的结果返回给客户端
client:
注册用户:从终端输入用户名和密码,将MSG传给服务器
用户登陆:用户输入用户名和密码给服务器,获取服务器返回的结果
查询单词:从终端输入单词,发送MSG给服务器,服务器返回一个结果
查询历史:传送MSG给服务器,服务器返回一个结果,客户端直接打印出来 (选择做)
#define R 1 // user register
#define L 2 // user login
#define Q 3 // query word
#define H 4 // history record (选择做)
typedef struct
{
int type;
char name[N];
char data[256]; // password or word
} MSG;