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

📄 linuxwork.c

📁 该例子程序为cgi相关的小程序
💻 C
字号:
#include <sys/types.h>
#include <sys/socket.h>
#include <stdio.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct _DATAAREA
{
        char name[256];
        char data[2048];
}DATAAREA,*PDATAAREA;

typedef struct _INDATAEDIT
{
        char szData[4096];
        
}INDATAEDIT,*PINDATAEDIT;


int main()
{
    char szReadData[1024];
    char szInData[2048];
    char *pszIndData;
    char szDataAreaName[10][256];
    char szDataArea[10][1024];
 
    char szInDataSource[1024];
    PDATAAREA pDataArea;
    PINDATAEDIT pInDataEdit;
    char * szInDataEdit[4096];
    int nLoop;
    int nDataCnt;
    int nrc;
    
       
    
   //////////////////////////////// 
   
   
   
    int sockfd;
	int len;
	struct sockaddr_in address;
	int result;
	
	char ch = 'A';
	int i;
	
    ////////////////////////////////
    
    
    
    FILE *fp;
    
    fp = stdout;
    fprintf(fp,"content-type:text/html\n");
    fprintf(fp,"\n");
    
    pDataArea=(PDATAAREA)malloc(sizeof(DATAAREA)*100);

    pInDataEdit=(PINDATAEDIT)malloc(sizeof(INDATAEDIT)*100);
    szInData[0]=0x00;
    
    
    while((fgets(szReadData,sizeof(szReadData),stdin))!=NULL)
    {
     strcat(szInData,szReadData);
    }
  
    strcpy(szInDataSource,szInData); 
    fprintf("Input Data : %s\n",szInDataSource);
    nrc = nSetInData(szInData,pInDataEdit,pDataArea,&nDataCnt);
    
    for(i=0;i<10;i++)
    {
    strcpy(szDataAreaName[i],"IP1");
    }
    
    for(i=0;i<10;i++)
    {
    nrc = nGetInData("IP1",szDataArea[i],pDataArea,nDataCnt);
    }
    
 /*     fprintf(fp,"<html>\n");
    fprintf(fp,"<head>\n");
    fprintf(fp,"<title>test</title>\n");
    fprintf(fp,"</head>\n");
    fprintf(fp,"<body>\n");
    
  //fprintf(fp,"CGI DATA PASS TEST<BR>\n");
    for(i=0;i<10;i++)
    {
    fprintf(fp,"%s=%s<BR>\n",szDataAreaName[i],szDataArea[i]);
    }  
    
    fprintf(fp,"</body>\n");
    fprintf(fp,"</html>\n");*/

///////////////////////////////////////////////////////////////////////////


	sockfd = socket(AF_INET, SOCK_STREAM, 0);	
	address.sin_family = AF_INET;
	address.sin_addr.s_addr = INADDR_ANY;
	address.sin_port = htons(9734);
	len=sizeof(address);

	
	if ( (result = connect(sockfd, (struct sockaddr *)&address, len))== -1)
	{
		perror("oops: client1");
		
		//////  connected  failed;
		exit(1);
	}
	
	
	while(1)
	{
		for(i=0;i<10;i++)
		{
		write(sockfd, &szDataArea[i], 1);
		}
		//printf("write ok\n");
		for(i=0;i<10;i++)
		{
		read(sockfd,&szDataArea[i], 1);
		}
		//printf("read ok\n");
		
		printf ("char from server = %c\n", ch);
		
		sleep(1);
	}

	close(sockfd);
	
	exit(0);
	
	
	
	///////////////////////////////////////////////////////////////////////////////
    free(pDataArea);
    free(pInDataEdit);
    
}

int nSetInData(char *pszInData,PINDATAEDIT pInDataEdit,PDATAAREA pDataArea,int *pnDataCnt)
{
    
    int nLoop;
    char * pszWork;
    
    nLoop = 0;
    strcpy(pInDataEdit[0].szData,strtok(pszInData,"&"));
    while(pszWork = strtok(NULL,"&"))
    {
                  nLoop++;
                  strcpy(pInDataEdit[nLoop].szData,pszWork);
    }
    *pnDataCnt = nLoop + 1;
    for(nLoop = 0;nLoop < *pnDataCnt;nLoop++)
    {
              if((pszWork = strtok(pInDataEdit[nLoop].szData,"="))!=NULL)
              {
                  strcpy(pDataArea[nLoop].name,pszWork);
               }
               if((pszWork = strtok(NULL,"="))!=NULL)
               {
                  strcpy(pDataArea[nLoop].data,pszWork);
               }else{
                     strcpy(pDataArea[nLoop].data,"NO DATA");
                     }
    }
    return 0;
    
}

int nGetInData(char * pszSource,char * pszDist,PDATAAREA pDataArea,int nDataCnt)
{
    int nLoop;
    int nLookup;
    
    nLookup = 0;
    for( nLoop = 0; nLoop < nDataCnt; nLoop++ )
    {
         //printf("Table %s<BR>\n",pDataArea[nLoop].name);
         if(!strcmp(pszSource,pDataArea[nLoop].name))
         {
          strcpy(pszDist,pDataArea[nLoop].data);
          nLookup = nLoop;
          break;
          }
    }
          return nLookup;
}

                
        

⌨️ 快捷键说明

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