unix课程设计基于中间件的图书管理系统(6)

2019-02-15 16:19

7.2服务器代码

#include #include #include #include #include #include #include

#include #include #define rec_length 20

getm(char buf[],char result[][10][50]) //change format {

char *ip=NULL,*op=NULL,*temp=NULL,*p=NULL,*tmp=NULL; int i=0,j=0,n=0;

temp=(char *)malloc(strlen(buf)); strcpy(temp,buf); p=temp;

strtok_r(temp,\

while((tmp=strtok_r(NULL,\ {

p=tmp;

while((tmp=strtok_r(p,\ {

strcpy(result[i][j],tmp); p=NULL; j++; } i++; j=0; }

free(temp); }

int opdb(char *cmd,char *p,int flag) //operate database {

MYSQL mysql;

MYSQL_RES *result; MYSQL_ROW row; int i,j,n=0; char buf[256];

if(mysql_init(&mysql)==NULL) {

printf(\ return -1; }

23

printf(\

if(!mysql_real_connect(&mysql,\ {

printf(\ mysql_close(&mysql); return -1; }

printf(\ printf(\

if(mysql_query(&mysql,cmd)!=0) {

printf(\ mysql_close(&mysql); return -1; }

if(flag==1) {

printf(\

if((result=mysql_store_result(&mysql))==NULL) {

mysql_free_result(result); mysql_close(&mysql); return -1; }

n=mysql_num_rows(result); } i=0; j=0;

if(p!=NULL) {

bzero(buf,sizeof(buf));

while((row=mysql_fetch_row(result))) {

strcat(buf,\ strcat(buf,row[0]);

for(i=1;i

strcat(buf,\ strcat(buf,row[i]); } }

sprintf(p,\ }

if(flag==1) {

printf(\

24

mysql_free_result(result); }

mysql_close(&mysql);

printf(\ printf(\ return n; }

checkstat(char id[]) {

char cmd1[128],cmd2[128],cmd[128],buf[10]; sprintf(cmd1,\

to_days(now())-to_days(b_date)>30&&r_id=\\\

sprintf(cmd2,\ if((opdb(cmd1,NULL,1)==0)&&(opdb(cmd2,NULL,1)<4)) {

sprintf(cmd,\ opdb(cmd,NULL,0); } else {

sprintf(cmd,\ opdb(cmd,NULL,0); }

printf(\}

main(int argc, char **argv ) {

struct sockaddr_in sin; struct servent *sp; int s,ns,pid;

char buf[1024]; char *service;

if(argc!=1) service=argv[1]; else {

fprintf(stderr,\ fprintf(stderr,\

fprintf(stderr,\ exit(-1); }

if((sp=getservbyname(service,\ fprintf(stderr,\ exit(-5); }

if((s=socket(AF_INET,SOCK_STREAM,0))==-1){ fprintf(stderr,\

25

exit(-6); }

bzero(&sin,sizeof(sin)); sin.sin_port=sp->s_port;

if(bind(s,(struct sockaddr *)&sin,sizeof(sin))==-1){ fprintf(stderr,\ close(s); exit(-6); }

if(listen(s,5)==-1){

fprintf(stderr,\ close(s); exit(-6); }

while(1){

fprintf(stderr,\ Now wait connect ...\\n\ if((ns=accept(s,0,0))==-1) { // wait a connection */

fprintf(stderr,\ continue; }

if((pid=fork())==-1){ // conneted, and then create child proc fprintf(stderr,\ close(s); exit(-1); }

if(pid!=0){ //parent proce, nothing to do, and to the next loop close(ns); wait(0); continue; }

if(pid==0){ // entered child proccedure close(s);

printf(\ MYSQL mysql;

MYSQL_RES *result; MYSQL_ROW row; char cmd[128],buf[128]; char *info[3];

char name[50],writer[50]; char id[50],password[50]; char rec[10][10][50]; char *b_id,*r_id; int n;

char tmp[10][10][50]; while(1)

26

{

n=0;

bzero(name,sizeof(name)); bzero(id,sizeof(id));

bzero(password,sizeof(password)); bzero(writer,sizeof(writer)); bzero(rec,sizeof(rec)); bzero(tmp,sizeof(tmp));

printf(\ if((n=read(ns,buf,sizeof(buf)))<=0) {

printf(\ break; }

buf[n]='\\0';

printf(\ if(strcmp(buf,\ {

printf(\ break; }

if(buf[1]==';') {

switch(buf[0]) {

case 'c': //update user info getm(buf,rec);

checkstat(rec[0][0]);

sprintf(cmd,\ n=opdb(cmd,buf,1);

printf(\ if((write(ns,buf,sizeof(buf)))<=0) {

printf(\ break; }

break;

case 'q': //Query getm(buf,rec);

printf(\

sprintf(cmd,\like\\\

n=opdb(cmd,buf,1);

printf(\

if((write(ns,buf,sizeof(buf)))<=0){

27


unix课程设计基于中间件的图书管理系统(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:二衬施工技术交底(上传版) - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: