网络编程在线英英词典之注册模块实现(三)
客户端注册模块
//注册
int do_register(int sockfd, MSG_T *msg){printf("register ...\n");memset(msg, 0, sizeof(MSG_T));//将msg内存全部置为0msg->type = MSGTYPE_R;printf("input name:");scanf("%s", msg->name);getchar(); //输入注册用户名printf("input passwd:");scanf("%s", msg->data);getchar();//输入注册用户密码if(send(sockfd, msg, sizeof(MSG_T),0) < 0){ //将消息发送给服务器printf("fail to send register msg.\n");return -1;}if(recv(sockfd, msg, sizeof(MSG_T), 0) < 0){ //接收服务器发来的消息printf("fail to register.\n");return -1;}printf("%s\n", msg->data);return 1;
}
服务器注册模块
//注册
int do_register(int sockfd, MSG_T *msg, sqlite3 *db){char sql[128] = {0};char *errmsg = NULL;sprintf(sql, "insert into usr values('%s','%s');", msg->name, msg->data);//将格式化的数据写入sqlif(sqlite3_exec(db, sql, NULL, NULL, &errmsg) != SQLITE_OK){ //执行sql语句 printf("%s\n", errmsg);memset(msg->data, 0, strlen(msg->data));sprintf(msg->data, "usr(%s) already exist !", msg->name);}else{printf("client usr(%s) registe success\n", msg->name);memset(msg->data, 0, strlen(msg->data));strcpy(msg->data, "register ok!");}//返回应答if(send(sockfd, msg, sizeof(MSG_T), 0) < 0){ //发送消息给客户端(给客户端做出应答)printf("fail to send\n");return 0;}return 1;
}
编译通过后,就可以进行用户注册测试
右边命令终端是在客户端中进行用户注册操作
左边命令终端是在数据库中查看是否创建成功
打开数据库验证后,出现zhangsan|123,确实成功注册了
注册模块功能已经实现
下面进行登录模块功能的实现
网络编程在线英英词典之注册模块实现(三)相关推荐
- 脑残式网络编程入门(一):跟着动画来学TCP三次握手和四次挥手
转自即时通讯网:http://www.52im.net/ 1.引言 网络编程中TCP协议的三次握手和四次挥手的问题,在面试中是最为常见的知识点之一.很多读者都知道"三次"和&quo ...
- 基于数据库及TCP网络编程实现的电子词典
目录 一.前言 二.项目介绍 三.功能实现 3.1. 用户注册 3.1.1 功能演示 3.1.2 功能函数实现 3.2. 用户登录 3.2.1 功能演示 3.2.2 功能函数实现 3.3. 查询单词 ...
- java基础5:工厂模式、单例模式、File文件类、递归、IO流、Properties配置文件、网络编程、利用IO流模拟注册登录功能、关于反射、JDK动态代理
1.工厂模式 23种java设计模式之一 1)提供抽象类(基类) 2)提供一些子类,完成方法重写 3)提供一个接口:完成具体子类的实例化对象的创建,不能直接new子类,构造函数私有化. 优点:具体的子 ...
- Linux网络编程——在线词典项目
目录 一.要求 二.框架 三.各部分的实现 客户端 注册 登录 查询 历史查询 服务器 解析客户端命令 注册 登录 单词查询 时间获取 查询单词成功向数据库插入时间等信息 历史查询 四.项目源码 客户 ...
- 网络编程中客户端链接的合法性,socketserver模块
客户端链接的合法性 验证合法性: 首先,我们来探讨一下,什么叫验证合法性, 举个例子:有一天,我开了一个socket服务端,只想让咱们这个班的同学使用,但是有一天,隔壁班的同学过来问了一下我开的这个服 ...
- 不为人知的网络编程(九):理论联系实际,全方位深入理解DNS
本文原作者:selfboot,博客地址:selfboot.cn,Github地址:github.com/selfboot,感谢原作者的技术分享. 1.引言 对于 DNS(Domain Name Sys ...
- Java进阶(十三)网络编程
十三.网络编程 什么是网络编程? 网络编程可以让程序与网络上的其他设备中的程序进行数据交互. 网络通信基本模式: 常见的通信模式有如下两种形式:Client/Server(CS模式).Browser/ ...
- Netty框架架构解析+API+运行流程+网络编程文章集锦
新手入门:目前为止最透彻的的Netty高性能原理和框架架构解析 <!-- 作者区域 --><div class="author"><a class=& ...
- Android网络编程系列 一 Socket抽象层
在<Android网络编程>系列文章中,前面已经将Java的通信底层大致的描述了,在我们了解了TCP/IP通信族架构及其原理,接下来我们就开始来了解基于tcp/ip协议层的Socket抽象 ...
- 网络编程懒人入门(七):深入浅出,全面理解HTTP协议
转自即时通讯网:http://www.52im.net/ 本文引用了自简书作者"涤生_Woo"的文章,内容有删减,感谢原作者的分享. 1.前言 HTTP(全称超文本传输协议,英文全 ...
最新文章
- opencv---JPEG图像质量检测代码
- 信息系统项目管理师-项目采购管理核心知识点思维脑图
- AspNetCore中使用Ocelot之 IdentityServer4
- [Mojava 10.14.4] Clover隐藏多余分区, 原来可以这么简单
- 信息学奥赛一本通(2056:【例3.7】最大的数)
- elasticsearch aggregations_Elasticsearch聚合的嵌套桶如何排序
- Oracle 12c 能否在2小时内完成一张14亿条记录的表结构字段类型变更
- 【英语学习】【WOTD】shard 释义/词源/示例
- (三)Netty之Channel通道
- golang 捕获堆栈信息_一篇文章教你如何捕获前端错误
- 软件项目管理原则谈-转自51testing
- 启用了文件索引,干脆连文件都找不到了
- 动手设计 CPU(三)—— 微程序控制的存储器读写系统设计
- List中存放list
- HTML5+CSS大作业——“传统节日--端午节(9页)
- ACM题解——贪心——卫星安装
- MySQL之高级SQL语句
- 浅谈CNN里的Lasso
- MIT 18.01 Single Variable Calculus(单变量微积分)课堂笔记【4】——求导法则,隐函数微分和反函数求导
- 云e办(后端)——项目介绍及搭载项目
热门文章
- SAP 入门学习途径——官方工具使用
- js一键批量打印_(原创)javascript 实现批量打印《简历》
- 矩孔菲涅尔衍射 matlab,圆孔矩孔的菲涅尔衍射模拟(matlab实现)-工程光学.docx
- CBLUE: A Chinese Biomedical LanguageUnderstanding Evaluation Benchmark
- 还挺好看!用命令行画思维导图;66天机器学习之旅;斯坦福CS234 强化学习课程;哈佛CS50 计算机科学导论课程;前沿论文 | ShowMeAI资讯日报
- 51单片机c语言避障小车,基于51单片机的循迹避障小车的设计.doc
- 爱思唯尔计算机期刊排名,2017影响因子高增长爱思唯尔物理期刊推荐
- UIControl 纠错
- 操作系统安全与系统攻击
- LVGL v8.1.0 lv_table 内存泄漏问题