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

妇幼能力建设网站百度免费推广怎么操作

妇幼能力建设网站,百度免费推广怎么操作,做网站销售是干什么的,软件开发工程师怎么考将 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.hkea.cn/news/525072/

相关文章:

  • 日照做网站的那家做的好百度网页链接
  • 建设云个人证件查询系统上海seo培训
  • 网站流量提供商杭州seo排名
  • 做装饰工程的在什么网站投标自建站
  • 地球人--一家只做信誉的网站帮忙推广的平台
  • 网站建设外包协议天津网站排名提升
  • 邯郸教育行业网站建设百度推广代理商查询
  • 政府网站有哪些网站seo最新优化方法
  • 做广告牌子seo外链工具
  • 微信页面设计网站兰州网络推广技术
  • 上门做网站搜狗站长工具
  • wordpress用户邮箱验证码百度seo搜索引擎优化培训
  • 360极速怎么屏蔽网站新闻热点大事件
  • 购物app开发价格表站长工具seo排名
  • 微餐饮网站建设营销型网站建设方案
  • 高端网站建设公司好不好2020国内搜索引擎排行榜
  • 网站建设服务公司选哪家比较好?苏州优化收费
  • 中国建设银行河南省分行网站推广信息哪个平台好
  • 网站建设官网免费模板杭州seo优化
  • 绍兴网站建设谷歌搜索引擎在线
  • 网站的会员认证怎么做黑龙江新闻头条最新消息
  • 做网站如何分工百度推广登录平台客服
  • 网站建设如何提案万网域名注册信息查询
  • 创意二维码制作网站企业网络营销推广案例
  • 论坛型网站怎么做百度高级检索入口
  • 做百度移动网站排搜素引擎优化
  • 公司创建一个网站需要多少钱想做百度推广找谁
  • 做文献ppt模板下载网站有哪些常德政府网站
  • 青岛网站建设公司排行外链工具在线
  • 网站怎么做显得简洁美观seo数据是什么意思