printf(\ break; }
break; case 'l':
getm(buf,rec);
checkstat(rec[0][0]);
sprintf(cmd,\=\\\ opdb(cmd,buf,1);
printf(\
if((write(ns,buf,strlen(buf)))<=0){ printf(\ break; }
printf(\ break; case 'L':
getm(buf,rec);
sprintf(cmd,\=\\\ opdb(cmd,buf,1);
printf(\
if((write(ns,buf,strlen(buf)))<=0) {
printf(\ break; }
printf(\ break; case 'b':
getm(buf,rec);
sprintf(cmd,\r_id=\\\
if(opdb(cmd,NULL,1)!=0) {
printf(\ buf[0]='1';buf[1]='\\0';
if((write(ns,buf,strlen(buf)))<=0) {
printf(\ break; }
break; }
sprintf(cmd,\
28
id=\\\
if(opdb(cmd,NULL,1)!=0) {
buf[0]='2';
if((write(ns,buf,strlen(buf)))<=0){ printf(\ break; }
break; }
printf(\ printf(\ bzero(cmd,sizeof(cmd));
sprintf(cmd,\(\\\ opdb(cmd,NULL,0); bzero(cmd,sizeof(cmd));
sprintf(cmd,\id=\\\
opdb(cmd,writer,0); buf[0]='0'; buf[1]='\\0';
if((write(ns,buf,strlen(buf)))<=0){ printf(\ break; }
printf(\ break; case 'r':
getm(buf,rec);
printf(\
sprintf(cmd,\where borrow.b_id=books.id&&borrow.r_id=\\\ opdb(cmd,buf,1);
printf(\ n=write(ns,buf,strlen(buf)); if(n<=0) {
printf(\ break; }
printf(\ break; case 'R':
getm(buf,rec);
sprintf(cmd,\
29
r_id=\\\ opdb(cmd,buf,0);
sprintf(cmd,\id=\\\
opdb(cmd,buf,0); checkstat(rec[0][0]); buf[0]='0';
if(write(ns,buf,strlen(buf))<=0){ printf(\ exit(-1); }
break; case 'm':
getm(buf,rec);
printf(\ sprintf(cmd,\
borrow.b_id,books.name,borrow.b_date,date_add(borrow.b_date,interval 30 day),borrow.status from borrow,books where borrow.b_id=books.id&&borrow.r_id=\\\ opdb(cmd,buf,1);
printf(\ n=write(ns,buf,strlen(buf)); if(n<=0){
printf(\ break;
} printf(\ break; case 'M':
getm(buf,rec);
sprintf(cmd,\r_id=\\\ opdb(cmd,buf,0);
sprintf(cmd,\day) where r_id=\\\ opdb(cmd,buf,0); checkstat(rec[0][0]); buf[0]='0';
if(write(ns,buf,strlen(buf))<=0){ printf(\ exit(-1); }
break; case 'a':
getm(buf,rec);
sprintf(cmd,\ if(opdb(cmd,buf,1)!=0) {
30
if(write(ns,buf,strlen(buf))<=0) {
printf(\ break; }
break; }
sprintf(cmd,\(\\\ opdb(cmd,buf,0); } } }
buf[0]='0';
if(write(ns,buf,strlen(buf))<=0) {
printf(\ exit(-1); }
break; case 'd':
getm(buf,rec);
printf(\
sprintf(cmd,\ opdb(cmd,buf,1);
n=write(ns,buf,strlen(buf)); if(n<=0){
printf(\ break; }
printf(\ printf(\ break; case 'D':
getm(buf,rec);
sprintf(cmd,\ opdb(cmd,buf,0); buf[0]='0';
if(write(ns,buf,strlen(buf))<=0) {
printf(\ break; }
break; default: break; 31
close(ns); exit(0); } } }
7.3中间件程序
#include
// structure defined for request as a client struct hostent *hp1; struct sockaddr_in sin1; struct servent *sp1; char sbuf[128]; int ss,spid;
char *sservice,*sdest;
// structure defined for request as a server struct sockaddr_in sin; struct servent *sp; int s,ns,pid,n;
char buf[128]; char *service;
// test the environment parameter: lservice, dservice, server_name if(argc==4){
service=argv[1]; sservice=argv[2]; sdest=argv[3]; } else {
fprintf(stderr,\
fprintf(stderr,\ fprintf(stderr,\
fprintf(stderr,\ exit(-1); }
if((sp=getservbyname(service,\ fprintf(stderr,\ exit(-5); }
32