C语言实现在线词典-TCP通信的方式实现

目录

C语言——在线词典

一、需求分析

 二、客户端功能设计

三、设计数据库mydict.db 

四、引入词典文件-dict.txt

五、代码实现

        1、 客户端:

       2、 服务器端:

六、效果展示


C语言——在线词典

功能介绍:基于Linux操作系统、网络编程和数据库实现在线词典,客户端可以进行注册、登录、查询、查看历史记录和退出功能,服务端基于TCP通信,多线程实现并发访问客户端,并利用sqlite3数据库实现对用户信息的管理。

一、需求分析

1.注册:若用户名已经注册过,可重新注册
2.登录:用户名或密码错误需重新登录
3.查询:输入要查的单词,#键结束查询
4.历史:可以查询当前用户历史查找过的单词
5.退出:退出在线词典

 二、客户端功能设计

三、设计数据库mydict.db 

这里数据库已经设计好了,创建了两个表,一个是user表,用来存放用户名和密码;一个是record表,用来存放查询过的的单词、查询时间和查询用户。

 

四、引入词典文件-dict.txt

部分词典内容展示,这里截图显示。

 

 

五、代码实现

        1、 客户端:

//客户端
#include <stdio.h>
#include <sys/types.h>          
#include <sys/socket.h>
#include <arpa/inet.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <netinet/in.h>

#define N 20
#define M 200
#define R 1 //注册
#define L 2 //登录
#define Q 3 //查询单词
#define H 4 //历史记录
#define E 5 //退出

typedef struct{
	int type;//消息类型
	char name[N];//用户名
	char text[M];//单词 或 密码
}MSG;
#define LEN_SMG sizeof(MSG)
typedef struct sockaddr SA;

//用户注册
void do_register(int sockfd,MSG *pbuf){
	pbuf->type = R;
	printf("用户名:");
	scanf("%s",pbuf->name);
	printf("密码:");
	scanf("%s",pbuf->text);

	send(sockfd,pbuf,LEN_SMG,0);
	recv(sockfd,pbuf,LEN_SMG,0);
	printf("%s\n",pbuf->text);
	sleep(1);

}
//用户登录
int do_login(int sockfd,MSG *pbuf){
	pbuf->type = L;
	printf("用户名:");
	scanf("%s",pbuf->name);
	printf("密码:");
	scanf("%s",pbuf->text);

	send(sockfd,pbuf,LEN_SMG,0);//发送给服务器
	recv(sockfd,pbuf,LEN_SMG,0);//从服务器接收
	if(pbuf->type == 8){
		printf("%s\n",pbuf->text);
		sleep(1);
		return 1;
	}
	else{
		printf("%s\n",pbuf->text);
		return 0;
	}

}
//查询单词
void do_query(int sockfd,MSG *pbuf){
	pbuf->type = Q;
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值