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

📄 runshm.pc

📁 linux下c 编写的 某项目代理服务端部分的代码。其中包括网络通信
💻 PC
字号:
#include "../include/shmmsg.h"extern struct comshm *Createshm();extern char *getetcf();EXEC SQL BEGIN DECLARE SECTION;  varchar uid[20];  varchar pwd[20];  varchar sql_sbase[20];  SQL_CURSOR City_no_cursor;  SQL_CURSOR Status_no_cursor;  SQL_CURSOR Name_no_cursor;  SQL_CURSOR Site_no_cursor;  EXEC SQL END DECLARE SECTION;main(){	int shmid;        key_t key;        char str[100];        char *gname;        int City_num;        int Status_num;        int Name_num;        int Site_num;        struct Alarm_City_no_info  S_City_no_info;        struct Alarm_Status_no_info S_Status_no_info;        struct Alarm_Name_no_info S_Name_no_info;        struct Alarm_Site_no_info S_Site_no_info;	        char *filename;	FILE *fp;	int  count;		int  proccount;	int semid1;	char tmp[Line];	 char wddm[JGBMLEN];	 char ipaddr[IPADDRLEN];	 char cflag[2];	 char sndp[5];	 char rcvp[5];	char procname[8],maxproc[8];	char expcode[4];	char objectfile[10];	struct	comshm	*shmp;         memset(&S_City_no_info,'\0',sizeof(struct Alarm_City_no_info));        memset(&S_Status_no_info,'\0',sizeof(struct Alarm_Status_no_info));        memset(&S_Name_no_info,'\0',sizeof(struct Alarm_Name_no_info));        memset(&S_Site_no_info,'\0',sizeof(struct Alarm_Site_no_info));        memset(wddm,0,JGBMLEN);        memset(ipaddr,0,IPADDRLEN);        memset(cflag,0,2);        memset(sndp,0,5);        memset(rcvp,0,5);                strcpy(uid.arr,"scott");        uid.len=strlen(uid.arr);        strcpy(pwd.arr,"tiger");        pwd.len=strlen(pwd.arr);        strcpy(sql_sbase.arr,"omcr");        sql_sbase.len=strlen(sql_sbase.arr);        EXEC SQL CONNECT :uid IDENTIFIED BY :pwd USING :sql_sbase;        if(sqlca.sqlcode==0)        {            shmp=Createshm();            if (shmp==NULL){                syslog("create shm err",__FILE__,__LINE__);                perror("create shm err");                exit(-1);                }            filename=getetcf(TRANSCONF);            if (filename==NULL){                syslog("get pathname err",__FILE__,__LINE__);                exit(-1);                }            if ((fp=fopen(filename,"r"))==NULL){                syslog("filename err",__FILE__,__LINE__);                exit(-1);                }            count=0;            while (fgets(tmp,Line,fp)!=NULL){                  if (tmp[0]!='#'){                  sscanf(tmp,"%s %s %s %s %s",wddm,ipaddr,cflag,sndp,rcvp);                                    strcpy(shmp->addstrlist[count].jgbm,wddm);                  shmp->addstrlist[count].ipadd=inet_addr(ipaddr);                  shmp->addstrlist[count].flag=atoi(cflag);                  shmp->addstrlist[count].sndport=atoi(sndp);                  shmp->addstrlist[count].rcvport=atoi(rcvp);                  count++;                  memset(wddm,0,JGBMLEN);                  memset(ipaddr,0,IPADDRLEN);                  memset(cflag,0,2);                  memset(sndp,0,5);                  memset(rcvp,0,5);                }                  memset(tmp,0,Line);             }             shmp->addno=count;             fclose(fp);        memset(procname,0,sizeof(procname));        memset(maxproc,0,sizeof(maxproc));        filename = getetcf(TRANSSEMA);        if (filename==NULL) {                syslog("get pathname err!",__FILE__,__LINE__);                exit(-1);        }        if ((fp = fopen(filename,"r"))==NULL) {                syslog("open file err!",__FILE__,__LINE__);                exit(-1);        }        while (fgets(tmp,Line,fp) != NULL) {                if (tmp[0] != '#') {                        sscanf(tmp,"%s%s",procname,maxproc);                        proccount=atoi(maxproc);                        shmp->maxproc=proccount;                        memset(procname,0,sizeof(procname));                        memset(maxproc,0,sizeof(maxproc));                }                memset(tmp,0,Line+1);        }        fclose(fp);        filename=getetcf(OBJECT);         if (filename==NULL){                 syslog("get objectfilename err",__FILE__,__LINE__);                exit(-1);                }          if ((fp=fopen(filename,"r"))==NULL){                  syslog("filename err",__FILE__,__LINE__);                exit(-1);                }        count=0;        while (fgets(tmp,Line,fp)!=NULL){                if (tmp[0]!='#'){                  sscanf(tmp,"%s%s",expcode,objectfile);                  strcpy(shmp->expstrulist[count].expcode,expcode);                  strcpy(shmp->expstrulist[count].expname,objectfile);                count++;                memset(expcode,0,4);                memset(objectfile,0,10);                }                memset(tmp,0,Line);         }        shmp->expno=count;         fclose(fp);            EXEC SQL ALLOCATE :City_no_cursor;            EXEC SQL ALLOCATE :Status_no_cursor;            EXEC SQL ALLOCATE :Name_no_cursor;            EXEC SQL ALLOCATE :Site_no_cursor;            EXEC SQL EXECUTE            begin                Pack_noes.Get_City_no(:City_no_cursor,:City_num);                Pack_noes.Get_Status_no(:Status_no_cursor,:Status_num);                Pack_noes.Get_Name_no(:Name_no_cursor,:Name_num);                Pack_noes.Get_Site_no(:Site_no_cursor,:Site_num);                       end;            END-EXEC;            int i=0;            EXEC SQL WHENEVER NOTFOUND DO break;            for (;;)            {                  EXEC SQL FETCH :City_no_cursor                  INTO :S_City_no_info;                                    if(shmp->Stru_Alarm_noes.Record_City_no[i].City_no!=0)                  {                        strcpy(shmp->Stru_Alarm_noes.Record_City_no[i].City_no,S_City_no_info.City_no);                        strcpy(shmp->Stru_Alarm_noes.Record_City_no[i].Name,S_City_no_info.Name);                  }                  i++;                  memset(&S_City_no_info,'\0',sizeof(struct Alarm_City_no_info));            }            i=0;            EXEC SQL WHENEVER NOTFOUND DO break;            for (;;)            {                  EXEC SQL FETCH :Status_no_cursor                  INTO :S_Status_no_info;                              if(shmp->Stru_Alarm_noes.Record_Status_no[i].Status_no!=0)                  {                         strcpy(shmp->Stru_Alarm_noes.Record_Status_no[i].Status_no,S_Status_no_info.Status_no);                         strcpy(shmp->Stru_Alarm_noes.Record_Status_no[i].Name,S_Status_no_info.Name);                  }                  i++;                  memset(&S_Status_no_info,'\0',sizeof(struct Alarm_Status_no_info));                              }           i=0;            EXEC SQL WHENEVER NOTFOUND DO break;            for (;;)            {                  EXEC SQL FETCH :Name_no_cursor                  INTO :S_Name_no_info;                  if(shmp->Stru_Alarm_noes.Record_Name_no[i].Name_no!=0)                  {                         strcpy(shmp->Stru_Alarm_noes.Record_Name_no[i].Name_no,S_Name_no_info.Name_no);                         strcpy(shmp->Stru_Alarm_noes.Record_Name_no[i].Name,S_Name_no_info.Name);                         strcpy(shmp->Stru_Alarm_noes.Record_Name_no[i].Sort_no,S_Name_no_info.Sort_no);                         strcpy(shmp->Stru_Alarm_noes.Record_Name_no[i].Level_no,S_Name_no_info.Level_no);                  }                  i++;                  memset(&S_Name_no_info,'\0',sizeof(struct Alarm_Name_no_info));            }            i=0;            EXEC SQL WHENEVER NOTFOUND DO break;            for (;;)            {                  EXEC SQL FETCH :Site_no_cursor                  INTO :S_Site_no_info;                  if(shmp->Stru_Alarm_noes.Record_Site_no[i].Site_no!=0)                  {                         strcpy(shmp->Stru_Alarm_noes.Record_Site_no[i].Site_no,S_Site_no_info.Site_no);                         strcpy(shmp->Stru_Alarm_noes.Record_Site_no[i].Name,S_Site_no_info.Name);                  }                  i++;                  memset(&S_Site_no_info,'\0',sizeof(struct Alarm_Site_no_info));            }             shmp->Stru_Alarm_noes.City_num=City_num;             shmp->Stru_Alarm_noes.Status_num=Status_num;             shmp->Stru_Alarm_noes.Name_num=Name_num;             shmp->Stru_Alarm_noes.Site_num=Site_num;                           EXEC SQL WHENEVER SQLERROR CONTINUE;             EXEC SQL CLOSE :City_no_cursor;             EXEC SQL CLOSE :Status_no_cursor;             EXEC SQL CLOSE :Name_no_cursor;             EXEC SQL CLOSE :Site_no_cursor;             if (( semid1=creatsem(SEMKEY1,proccount))<0) {                 syslog("Creat semaphore1 error",__FILE__,__LINE__);                 exit(-1);                 }             shmdt((char*)shmp);             syslog("Run share memery OK!",__FILE__,__LINE__);             EXEC SQL commit work release;          }         else               syslog("Connect Database Fall!",__FILE__,__LINE__);       }

⌨️ 快捷键说明

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