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

2019-02-15 16:19

if((s=socket(AF_INET,SOCK_STREAM,0))==-1){ fprintf(stderr,\ 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);

if((sp1=getservbyname(sservice,\ fprintf(stderr,\ exit(-5); }

if((hp1=gethostbyname(sdest))==0){

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

bzero(&sin1,sizeof(sin1));

bcopy(hp1->h_addr,&sin1.sin_addr,hp1->h_length); sin1.sin_family=hp1->h_addrtype; sin1.sin_port=sp1->s_port;

if((ss=socket(AF_INET,SOCK_STREAM,0))==-1){ fprintf(stderr,\ exit(-6);

33

}

if(connect(ss,(struct sockaddr *)&sin1,sizeof(sin1))==-1){ fprintf(stderr,\ close(ss); exit(-6); }

printf(\ while(1) {

bzero(buf,sizeof(buf));

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

fprintf(stderr,\ close(ns); exit(-3); }

printf(\ // request message got from the Client. printf(\

if(write(ss,buf,strlen(buf))!=strlen(buf)){ //to server fprintf(stderr,\ close(ss); exit(-1); }

if(strcmp(buf,\ break;

bzero(buf,sizeof(buf));

if((n=read(ss,buf,sizeof(buf)))==0){ //from server

fprintf(stderr,\ close(ss); exit(-2); }

printf(\

// End the Communication with my Server

// Next 2 Line, build a replay Message buf, and write it back printf(\

if(write(ns,buf,strlen(buf))!=strlen(buf)){ fprintf(stderr,\ close(ns); exit(-4); } }

close(ss); close(ns); exit(0); } }

34

}

7.4客户端程序

#include #include #include #include #include #include #include #define rec_length 20 main(int argc,char **argv) {

struct hostent *hp;//主机信息相关数据结构 struct sockaddr_in sin;//通用地址结构sockaddr struct servent *sp;//服务器数据结构servent char buf[50]; int s,pid;

char *service,*dest; //1 检查命令行参数个数

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

fprintf(stderr,\

fprintf(stderr,\

fprintf(stderr,\ fprintf(stderr,\ destination is defined in /etc/hosts\\n\ exit(-1); }

//2 获得服务信息

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

//3 获得(服务器)主机信息 if((hp=gethostbyname(dest))==0){ fprintf(stderr,\ exit(-6); }

//4 填写服务器地址结构

bzero(&sin,sizeof(sin)); //首先清0 bcopy(hp->h_addr,&sin.sin_addr,hp->h_length); //地址 sin.sin_family=hp->h_addrtype; //地址族 sin.sin_port=sp->s_port; //端口号

35

//5 建立套接字

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

//6 向服务器请求连接

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

// next 2 Line build request message //My Codes mainmenu(s); exit(0); }

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

#define MAX_PASSWD_LEN 8

#define ECHOFLAGS (ECHO |ECHOE |ECHOK |ECHONL) int getpasswd(char * password, int size); #define C_NUM 3 struct reader{//读者数据结构 char id[50]; char name[50]; char password[50]; char enable[1]; };

struct admi{ char id[20]; char name[40]; char password[40]; };

//全局变量保存登录信息 int userlogin=0;//普通用户登录 int admilogin=0;//管理员登录 struct reader readerlog; struct admi admilog;

getm(char buf[],char result[][10][50])//接收信息转换

{

char *ip=NULL,*op=NULL,*temp=NULL,*p=NULL,*tmp=NULL;

36

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; }

p=NULL; tmp=NULL; ip=NULL; op=NULL; free(temp); temp=NULL; }

quit(int s) //退出 { } {

char *buf=\printf(\谢谢使用\\n\if(write(s,buf,strlen(buf))<=0) printf(\exit(0);

int querymenu(int s) //查询菜单

char buf[128],c,msg[128],info[128][10][50]; int i=0,j=0,k=0,n=0;char *book[3];

char *title[4]={\编号\书名\作者\数量\

while(1) { printf(\

printf(\请输入您要查找的书的名字(输入!返回):\bzero(buf,sizeof(buf)); bzero(msg,sizeof(msg)); bzero(info,sizeof(info)); scanf(\输入

37


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

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

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

马上注册会员

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