⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 s1-1.c

📁 linux课程实验作业。客户端与服务端程序。简单的算术运算功能。
💻 C
字号:
#include<sys/types.h>#include<sys/ipc.h>#include<sys/msg.h>#include<stdio.h>#include<stdlib.h>#include<string.h>#define MSGKEY 75struct msgform{   long mtype;   int action;    char user[10],pass[20];   float num1,num2,rs; char op;   char mtext[256]; }msg;struct userarr{  char user[10];        char pass[20];}ua[100];int msgqid;int last;main(){ int i,pid,*pint;last=-1;extern cleanup();for(i=0;i<20;i++)  signal(i,cleanup);msgqid=msgget(MSGKEY,0777|IPC_CREAT);for(;;){  msgrcv(msgqid,&msg,512,1,0);  pint=(int *) msg.mtext;  pid=*pint;  printf("server: recieve from pid %d \n",pid);    printf("name:%s\n",msg.user);         printf("pw:%s\n",msg.pass);        msg.mtype=pid;  *pint=getpid();     if(msg.action==1)       {  if(serchuser()==1)             msg.action=3;             else msg.action=-1;                  }      else if(msg.action==2)       { if(check()==1)            msg.action=-2;         else {msg.action=4;add();}                  }    else if(msg.action==10)          {     f();        }         msgsnd(msgqid,&msg,sizeof(struct msgform),0);  }}cleanup(){ msgctl(msgqid,IPC_RMID,0);  exit(0);}f(){ float a,b,result;  char oprator; a=msg.num1;  b=msg.num2;  oprator=msg.op;   printf("express: %f %c %f\n",msg.num1,msg.op,msg.num2);  switch(oprator){   case '+':result=a+b;break;   case '-':result=a-b;break;  case '*':result=a*b;break;case '/':result=a/b;break;}    msg.rs=result;}int check(){ int i;   for(i=0;i<=last;i++)     if(strcmp(ua[i].user,msg.user)==0) return(1);     return(0);}int serchuser(){ int i; for(i=0;i<=last;i++)     if( (strcmp(ua[i].user,msg.user)==0) && (strcmp(ua[i].pass,msg.pass)==0) ) return(1);   return(0);}add(){ strcpy(ua[++last].user,msg.user);     strcpy(ua[last].pass,msg.pass);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -