当前位置: 首页 > news >正文

phpcms校园网站杭州网页设计招聘

phpcms校园网站,杭州网页设计招聘,wordpress 提供api,正规的编程培训机构将 epoll 服务器 客户端拿来用 客户端: 写一个界面,里面有注册登录 服务器:处理注册和登录逻辑,注册的话将注册的账号密码写入数据库,登录的话查询数据库中是否存在账号,并验证密码是否正确 额外功能&a…

将 epoll 服务器

客户端拿来用 客户端:

写一个界面,里面有注册登录

服务器:处理注册和登录逻辑,注册的话将注册的账号密码写入数据库,登录的话查询数据库中是否存在账号,并验证密码是否正确

额外功能:客户端登录的时候,服务器向客户端发送一个验证码,只有验证码也正确的时候,才能登录成功·

服务器部分:

#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <pthread.h>
#include <semaphore.h>
#include <wait.h>
#include <signal.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include <sys/ipc.h>
#include <sys/sem.h>
#include <semaphore.h>
#include <sys/msg.h>
#include <sys/shm.h>
#include <sys/un.h>
#include <sys/epoll.h>
#include <sqlite3.h>typedef struct sockaddr_in addr_in_t;
typedef struct sockaddr addr_t;
typedef struct sockaddr_un addr_un_t;enum Type
{TYPE_REGIST,TYPE_LOGIN,
//	TYPE_CHAT
};typedef struct User
{char name[20];char pswd[20];
//	int sock;}user_t;typedef struct Pack
{enum Type type;char name[20];char pswd[20];char tarname[20];char text[1024];
}pack_t;
void read_data(int client);
int insert_user(user_t user);
int find_user(const char *username);
int callback(void * arg,int argc,char** argv,char** col);
//user_t user_arr[50]={0};
//int user_len=0;
user_t user={0,0};
int main(int argc, const char *argv[])
{if(argc !=2){printf("请输入端口号:\n");return 1;}int port=atoi(argv[1]);int server=socket(AF_INET,SOCK_STREAM,0);addr_in_t addr={0};addr.sin_family=AF_INET;addr.sin_port=htons(port);addr.sin_addr.s_addr=inet_addr("0.0.0.0");if(bind(server,(addr_t*)&addr,sizeof(addr))==-1){perror("bind");return 1;}listen(server,10);int epfd=epoll_create1(EPOLL_CLOEXEC);struct epoll_event epoll_stdin={.events=EPOLLIN,.data.fd=0};struct epoll_event epoll_server={.events=EPOLLIN,.data.fd=server};epoll_ctl(epfd,EPOLL_CTL_ADD,0,&epoll_stdin);epoll_ctl(epfd,EPOLL_CTL_ADD,server,&epoll_server);struct epoll_event arr[50]={0};while(1){int len=epoll_wait(epfd,arr,50,-1);for(int i=0;i<len;i++){int fd=arr[i].data.fd;if(fd=server){printf("有客户端连接\n");int client=accept(server,0,0);struct epoll_event epoll_client={.events=EPOLLIN,.data.fd=client};epoll_ctl(epfd,EPOLL_CTL_ADD,client,&epoll_client);}else if(fd==0){char buf[64]="";scanf("%63s",buf);while(getchar()!=10);printf("键盘键入数据:%s\n",buf);}else{read_data(fd);}}}return 0;
}int insert_user(user_t user)
{
//	user_arr[user_len]=user;
//	user_len++;sqlite3* db=NULL;if(sqlite3_open("./test.db",&db)!=SQLITE_OK){printf("数据库打开失败\n");return -1;}strcat(user.name,",");strcat(user.name,user.pswd);strcat(user.name,")");char *buf=user.name;char* sql="insert into user(username,pswd) values(";strcat(sql,buf);char* errmsg=NULL;if(sqlite3_exec(db,sql,0,0,&errmsg)!=SQLITE_OK){return -1;}sqlite3_close(db);return 1;
}int find_user(const char* username)
{
/*for(int i=0;i<user_len;i++){if(strcmp(username,user_arr[i].name)==0){return i;}}return -1;
*/sqlite3* db=NULL;if(sqlite3_open("./test.db",&db)!=SQLITE_OK){printf("数据库打开失败\n");return -1;}char* sql="select * from user where username=";strcat(sql,username);char* errmsg=NULL;if(sqlite3_exec(db,sql,callback,&user,&errmsg)!=SQLITE_OK){sqlite3_close(db);return -1;}sqlite3_close(db);return 1;
}
int callback(void * arg,int argc,char** argv,char** col)
{user_t* brr=(user_t*)arg;strcpy(brr->name,argv[0]);strcpy(brr->pswd,argv[1]);return 1;
}void read_data(int client)
{pack_t pack={0};int res=read(client,&pack,sizeof(pack));switch(pack.type){case TYPE_REGIST:{int res=find_user(pack.name);				char *msg=NULL;if(res==-1){user_t user ={0};strcpy(user.name,pack.name);strcpy(user.pswd,pack.pswd);insert_user(user);msg="注册成功";}else{msg="该账号已存在";}strcpy(pack.text,msg);write(client,&pack,sizeof(pack));break;}case TYPE_LOGIN:{int res=find_user(pack.name);char *msg=NULL;if(res=-1){msg="该账号不存在";}else{
//					user_t user=user_arr[res];if(strcmp(user.pswd,pack.pswd)==0){msg="登录成功";
//						user_arr[res].sock=client;}else{msg="密码错误";}}strcpy(pack.text,msg);write(client,&pack,sizeof(pack));break;}
/*case TYPE_CHAT:{char *msg=NULL;int res=find_user(pack.tarname);if(res==-1){msg="该用户不存在";strcpy(pack.text,msg);write(client,&pack,sizeof(pack));}else{user_t user=user_arr[res];if(user.sock==0){msg="用户未登录";strcpy(pack.text,msg);write(client,&pack,sizeof(pack));}else{int tarsock=user.sock;write(tarsock,&pack,sizeof(pack));}}break;}
*/}
}

客户端部分:

#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <pthread.h>
#include <semaphore.h>
#include <wait.h>
#include <signal.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include <sys/ipc.h>
#include <sys/sem.h>
#include <semaphore.h>
#include <sys/msg.h>
#include <sys/shm.h>
#include <sys/un.h>
#include <sys/epoll.h>
#include <sqlite3.h>typedef struct sockaddr_in addr_in_t;
typedef struct sockaddr addr_t;
typedef struct sockaddr_un addr_un_t;enum Type
{TYPE_REGIST,TYPE_LOGIN,
//	TYPE_CHAT
};typedef struct Pack
{enum Type type;char name[20];char pswd[20];char tarname[20];char text[1024];
}pack_t;void *thread_main(void *arg)
{int client=*(int*)arg;while(1){pack_t pack={0};int res=read(client,&pack,sizeof(pack));if(res==0){break;}switch(pack.type){case TYPE_REGIST:{printf("%s\n",pack.text);break;}case TYPE_LOGIN:{printf("%s\n",pack.text);break;}
//		case TYPE_CHAT:
//			{
//				printf("接收到消息:%s\n",pack.text);
//				break;
//			}}}
}int main(int argc, const char *argv[])
{if(argc !=2){printf("请输入端口号:\n");return 1;}int port=atoi(argv[1]);int client=socket(AF_INET,SOCK_STREAM,0);addr_in_t addr={0};addr.sin_family=AF_INET;addr.sin_port=htons(port);addr.sin_addr.s_addr=inet_addr("192.168.133.128");if(connect(client,(addr_t*)&addr,sizeof(addr))==-1){perror("connect");return 1;}pthread_t id;pthread_create(&id,0,thread_main,&client);pthread_detach(id);while(1){int ch=-1;printf("1.注册\n");printf("2.登录\n");
//		printf("3.聊天\n");printf("0.退出\n");printf("请选择:");scanf("%d",&ch);while(getchar()!=10);switch(ch){case 1:{pack_t pack={0};printf("请输入账号:");scanf("%s",pack.name);while(getchar()!=10);printf("请输入密码:");scanf("%s",pack.pswd);while(getchar()!=10);pack.type=TYPE_REGIST;write(client,&pack,sizeof(pack));break;}case 2:{pack_t pack={0};printf("请输入账号:");scanf("%s",pack.name);while(getchar()!=10);printf("请输入密码:");scanf("%s",pack.pswd);while(getchar()!=10);pack.type=TYPE_LOGIN;write(client,&pack,sizeof(pack));break;}
/*		case 3:{pack_t pack={0};pack.type=TYPE_CHAT;scanf("%s %s",pack.tarname,pack.text);printf("tarname = %s\n",pack.tarname);while(getchar()!=10);write(client,&pack,sizeof(pack));break;}	
*/case 0:{break;}}}return 0;
}

http://www.yayakq.cn/news/816276/

相关文章:

  • 携程旅游网官方网站 做攻略海淀周边网站建设
  • 伊川网站建设全国网站排名
  • 东莞大岭山网站建设米课中有个内贸网站建设
  • app制作外包阳江企业网站排名优化
  • 免费做网站教程贵州最好的网站建设推广公司
  • idea做百度网站规划设计网址
  • 上海企业网站排名优化wordpress wp_options
  • 网站如何获取用户信任类似传奇的网页游戏
  • 网站用什么cms四种营销策略
  • 传媒免费网站建设小程序免费制作平台企业中心
  • 网站标签怎么做跳转页面手机旅游网站建设
  • jsp旅游网站开发关键技术农业局网站建设方案
  • flash工作室网站模板网站 毕业设计代做
  • 我有域名跟空间能教我做网站吗网站流量的作用
  • 梧州建设网站如何制作一个小程序
  • 如何建设一个不备案的网站徐州网站关键词
  • 单位网站建设要求建自己的网站
  • 鲜花网站源码wordpress的程序文件
  • 大连的网站制作公司网站网页制作图片素材
  • 中天建设集团有限公司总网站建筑网2016农村别墅图大全
  • 网站建设有用吗xxx网站建设规划书
  • 番禺建网站网站开发课设心得
  • 做电商网站需要会些什么条件wordpress版本对应的php版本号
  • 购买友情链接网站网站建设开发费会计分录
  • 上海建网站wordpress支持移动
  • 如何保护网站模板网站建设分金手指专业十
  • 电子商务网站建设规划论文培训类网站模板
  • 金华手机建站模板480元做网站
  • 海南做房地产网站的网络公司Fastcgi做网站
  • 长春网站建设推广柳州最新消息