#include "../../include/cli.h"
char ret_buf[200];
char buf[200];
void login_menu()
{
puts("--------1.登录--------");
puts("--------2.注册--------");
puts("--------0.退出--------");
}
void book_menu()
{
printf("--------1.查看图书信息--------\n");
printf("--------2.增加图书信息--------\n");
printf("--------3.删除图书信息--------\n");
printf("--------4.更改图书信息--------\n");
printf("--------0.退出--------\n");
}
int do_work(int connfd)
{
if(connfd < 0)
{
puts("connfd < 0");
return -1;
}
int op;
int ret = -1;
while(1)
{
char log[50] = "log:";
char reg[50] = "reg:";
login_menu();
scanf("%d",&op);
memset(buf, 0, sizeof(buf));
if(1 == op)
{
printf("请输入六位账号密码\n");
scanf("%s",buf);
if(strlen(buf) < 13)
{
printf("输入不规范请重新输入\n");
continue;
}
strcat(log,buf);
send(connfd, log, sizeof(log), 0);
memset(ret_buf,0,sizeof(ret_buf));
ret = recv(connfd,ret_buf,sizeof(ret_buf),0);
if(strcmp(ret_buf,"success") == 0)
{
puts("登录成功,进入操作界面");
operation_book(connfd);
}
if(strcmp(ret_buf,"error") == 0)
{
puts("密码错误,请重试");
continue;
}
}
else if(2 == op)
{
memset(buf, 0, sizeof(buf));
puts("请输入注册的账号、密码(均为六位)");
scanf("%s",buf);
if(strlen(buf) < 13)
{
printf("输入不规范请重新输入\n");
continue;
}
strcat(reg,buf);
send(connfd, reg, sizeof(reg), 0);
memset(ret_buf,0,sizeof(ret_buf));
ret = recv(connfd,ret_buf,sizeof(ret_buf),0);
if(strcmp(ret_buf,"reg_success") == 0)
{
printf("注册完成\n");
continue;
}
}
else if(0 == op)
{
puts("退出");
break;
}
}
return 0;
}
int operation_book(int connfd)
{
if(connfd < 0)
{
puts("connfd < 0");
return -1;
}
int op = -1;
int ret = -1;
char buf[255];
char ret_buf[255];
while(1)
{
char add[50] = "add:";
char del[50] = "del:";
char sek[50] = "sek:";
char rev[50] = "rev:";
book_menu();
scanf("%d",&op);
if(1 == op)
{
printf("请输入需要查找书籍的六位ID码\n");
memset(buf, 0, sizeof(buf));
scanf("%s",buf);
strcat(sek,buf);
send(connfd,sek,sizeof(sek),0);
ret = recv(connfd,ret_buf,sizeof(ret_buf),0);
if(ret > 0 )
{
puts(ret_buf);
}
else if(0 == ret)
{
puts("数据获取完毕");
break;
}
}
else if(2 == op)
{
printf("请输入需要写入的图书信息\n");
scanf("%s",buf);
strcat(add,buf);
send(connfd,add,sizeof(add),0);
memset(ret_buf,0,sizeof(ret_buf));
ret = recv(connfd,ret_buf,sizeof(ret_buf),0);
if(strcmp(ret_buf,"success") == 0)
{
puts("写入成功");
}
}
else if(3 == op)
{
printf("请输入需要删除的书籍的ID\n");
scanf("%s",buf);
strcat(del,buf);
send(connfd,del,sizeof(del),0);
memset(ret_buf,0,sizeof(ret_buf));
ret = recv(connfd,ret_buf,sizeof(ret_buf),0);
if(ret > 0)
{
if(strcmp(ret_buf,"success") == 0)
{
puts("删除成功");
}
puts(ret_buf);
}
}
else if(4 == op)
{
printf("请输入需要修改的书籍的ID及信息\n");
scanf("%s",buf);
strcat(rev,buf);
send(connfd,rev,sizeof(rev),0);
memset(ret_buf,0,sizeof(ret_buf));
ret = recv(connfd,ret_buf,sizeof(ret_buf),0);
if(ret > 0)
{
if(strcmp(ret_buf,"success") == 0)
{
puts("修改成功");
}
puts(ret_buf);
}
}
else
{
printf("即将退出\n");
break;
}
}
}
#include "../../include/cli.h"
int main()
{
int sockfd = socket(AF_INET, SOCK_STREAM, 0);
if(sockfd < 0)
{
puts("socket error.");
return -1;
}
struct sockaddr_in myser;
myser.sin_family = AF_INET;
myser.sin_port = htons(8888);
myser.sin_addr.s_addr = inet_addr("127.0.0.1");
int ret = connect(sockfd, (struct sockaddr *)&myser, sizeof(myser));
if(ret != 0)
{
puts("connect error.");
close(sockfd);
return -1;
}
puts("connect success.");
do_work(sockfd);
close(sockfd);
return 0;
}
客户端相比于服务器就比较简单,主要是发送请求。