#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <pthread.h>
#include <stdlib.h>
char buf[1024] = {0};
//与服务器进行连接
int init_net(unsigned short port)
{
int sockfd = socket(AF_INET, SOCK_STREAM, 0);
if(sockfd < 0)
{
puts("socket error");
return -1;
}
puts("socket success");
//connet
struct sockaddr_in myser;
myser.sin_family = AF_INET;
myser.sin_port = htons(7777);
myser.sin_addr.s_addr = inet_addr("127.0.0.1");
int ret = connect(sockfd, (struct sockaddr *)&myser,sizeof(myser));
if(ret != 0)
{
puts("connet server error");
close(sockfd);
return -1;
}
puts("连接主服务器成功!");
// char buf[50] = {0};
// memset(buf, 0, sizeof(buf));
// ret = recv(sockfd, buf, sizeof(buf), 0);
// if(ret > 0)
// {
// puts(buf);
// }
return sockfd;
}
//拆分功能
int opt_cut(char *opt, char *buf)
{
if(NULL == opt || NULL == buf)
{
puts("opt_cut: NULL pointer error");
return -1;
}
memcpy(opt,buf,1);
return 0;
}
//拆分账号ID
int acc_cut(char *cmd, char *buf)
{
if(NULL == cmd || NULL == buf)
{
puts("acc_cut: NULL pointer error");
return -1;
}
memcpy(cmd,buf+2,6);//从第2位开始取六位
return 0;
}
//拆分账号密码
int code_cut(char *pcmd, char *buf)
{
if(NULL == pcmd || NULL == buf)
{
puts("code_cut NULL pointer error");
return -1;
}
memcpy(pcmd, buf+9, 6);//第9位之后的六位
return 0;
}
//注册界面子函数
int Log_in(int arg)
{
int sockfd = (int) arg;
if(sockfd < 0)
{
return -1;
}
printf("请输入您的用户ID号:密码 \n格式如(1:xxxxxx:xxxxxx)");
memset(buf, 0, sizeof(buf));
do
{
gets(buf);
}while(!buf[0]);
char opt[1] = {0};
char cmd[50] = {0};
char pcmd[50] = {0};
memset(opt, 0, sizeof(opt));
memset(cmd, 0, sizeof(cmd));
memset(pcmd, 0, sizeof(pcmd));
acc_cut(cmd, buf);//账号
printf("您的id为:");
puts(cmd);
code_cut(pcmd, buf);//密码
printf("您的密码为:");
puts(pcmd);
int op;
printf("确认是否注册:1(yes)/0(no)");
scanf("%d",&op);
if(0 == op)
{
return -1;
}
send(sockfd, buf, sizeof(buf), 0);
puts("当前在注册子函数界面中");
memset(buf, 0, sizeof(buf));
// int ret = recv(sockfd, buf, sizeof(buf), 0);
// if(ret > 0)
// {
// puts(buf);
// opt_cut(opt, buf);
// / puts(opt);
// if(strcmp(opt, "0") == 0)
// {
// return -1;
// }
//
// }
// else if(ret == 0)
// {
// return -1;
// }
return 0;
}
//登陆界面子函数
int register_in(int arg)
{
int sockfd = arg;
if(sockfd < 0)
{
return -1;
}
printf("请输入您的用户ID号:密码 \n格式如(2:xxxxxx:xxxxxx)");
memset(buf, 0, sizeof(buf));
do
{
gets(buf);
}while(!buf[0]);
char opt[1] = {0};
char cmd[50] = {0};
char pcmd[50] = {0};
memset(opt, 0, sizeof(opt));
memset(cmd, 0, sizeof(cmd));
memset(pcmd, 0, sizeof(pcmd));
acc_cut(cmd, buf);//账号
printf("您的id为:");
puts(cmd);
code_cut(pcmd, buf);//密码
printf("您的密码为:");
puts(pcmd);
int op;
printf("确认是否登陆:1(yes)/0(no)");
scanf("%d",&op);
if(0 == op)
{
return -1;
}
send(sockfd, buf, sizeof(buf), 0);
puts("当前在登陆子函数界面");
memset(buf, 0, sizeof(buf));
// int ret = recv(sockfd, buf, sizeof(buf), 0);
// if(ret > 0)
// {
// puts(buf);
printf("%d",&op);
//opt_cut(opt, buf);
// puts(opt);
// if(strcmp(opt, "0") == 0)
// {
// return -1;
// }
// }
// if(0 == ret)
// {
// return -1;
// }
return 0;
}
//上传商品子函数
int up_thing(char *arg)
{
return -1;
}
//下载商品子函数
int down_thing(char *arg)
{
return -1;
}
//聊天子函数
int in_communicate(int arg)
{
int sockfd = arg;
printf("进入聊天界面\n");
while(1)
{
memset(buf, 0, sizeof(buf));
gets(buf);
send(sockfd, buf, sizeof(buf), 0);
memset(buf, 0, sizeof(buf));
}
return 0;
}
//发圈儿子函数
int share_thing(char *arg)
{
return -1;
}
//个人中心子函数
int self_thing(char *arg)
{
return -1;
}
//主界面
int main(int argc, const char *argv[])
{ int p = 0;
int sockfd = -1;
sockfd = init_net(7777);
if(sockfd < 0)
{
puts("init net error");
return -1;
}
puts("init net success");
// pthread_t tidd;
// int ret = pthread_create(&tidd, NULL, server,NULL );
// if(ret != 0)
// {
// puts("create_pthread error.");
// close(sockfd);
// exit(1);
// }
while(0 == p)
{
int op = 0;
int ret = 0;
printf("请输入相应的选项\n");
printf("1 **************注册\n");
printf("2 **************登陆\n");
printf("0 **************退出\n");
//fflush(stdin);
scanf("%d",&op);
printf("%d\n",op);
if(0 == op)
{
printf("%d\n",op);
printf("已退出\n");
break;
}
switch(op)
{
case 1:
ret = Log_in(sockfd);
if(-1 == ret)
{
puts("注册失败");
break;
}
else if(0 == ret)
{
puts("注册成功");
break ;
}
case 2:
ret = register_in(sockfd);
if(-1 == ret)
{
puts("登陆失败");
break;
}
else if(0 == ret)
{
puts("登陆成功");
p++;
}
break;
default:
break;
}
break;
}
//do ioop send/recv
printf("退出注册界面\n");
while(1 == p)
{
int op = 0;
int ret = 0;
printf("请输入相应的选项\n");
printf("1 **************上传商品\n");
printf("2 **************下载商品\n");
printf("3 **************聊天\n");
printf("4 **************发圈儿\n");
printf("5 **************个人中心\n");
printf("0 **************退出\n");
//fflush(stdin);
scanf("%d",&op);
printf("%d\n",op);
if(0 == op)
{
printf("%d\n",op);
printf("已退出\n");
break;
}
switch(op)
{
case 1:
// ret = up_thing(sockfd);
if(-1 == ret)
{
puts("上传商品失败");
break;
}
else if(0 == ret)
{
puts("上传商品成功");
break ;
}
case 2:
// ret = down_thing(sockfd);
if(-1 == ret)
{
puts("下载商品失败");
break;
}
else if(0 == ret)
{
puts("下载商品成功");
p++;
}
break;
case 3:
ret = in_communicate(sockfd);
if(-1 == ret)
{
puts("加载聊天界面失败");
break;
}
else if(0 == ret)
{
puts("加载聊天界面成功");
p++;
}
break;
case 4:
// ret = share_thing(sockfd);
if(-1 == ret)
{
puts("发圈儿失败");
break;
}
else if(0 == ret)
{
puts("发圈儿成功");
p++;
}
break;
case 5:
// ret = self_thing(sockfd);
if(-1 == ret)
{
puts("个人中心操作失败");
break;
}
else if(0 == ret)
{
puts("个人中心操作成功");
p++;
}
break;
default:
break;
}
break;
}
//close
close(socket);
return 0;
}
评论10