www.pudn.com > DTMS.rar > SEVPROG.C


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

#include "mail.h"
#include "usrpass.h"

#define MAXSIZE 500
#define MYPORT 5500 
#define BACKLOG 10
define OK 1

typedef struct{
           int  mail_num;
           char to[MAXSIZE];
           char from[MAXSIZE];
           char subject[MAXSIZE];
           char content[MAXSIZE];
           time_t recvtime;
}MailStruct;

int ServerMain(int);

char GetSockChar(int); 
int SendSockChar(int,char);
int readline(int,void*,int);
int sockendline(int );
void CutEndl(char* str);

int RegisterSev(int );
int RecvUsrPswd(int,char* ,char* );
int  LoginSev(int );

int MailService(int,char*);
int SendMailList(int,char*);

int ReadMailSev(int sockfd);
int DelMailSev(int sockfd,char*Usr);
int SendMailSev(int sockfd,char*Usr);

int main()
{  
    int sockfd,new_fd;
    struct sockaddr_in their_addr;
    int sin_size;
 
    sockfd=StartListening();
   
    while(1)
    {
        sin_size=sizeof(struct sockaddr_in);
        new_fd=accept(sockfd,(struct sockaddr*)&their_addr,&sin_size);
        if (new_fd==-1) {
                   perror("accept"); 
                   continue;
         }
        printf("server:got connection from %s",inet_ntoa(their_addr.sin_addr));
        if (!fork())  {           
                                ServerMain(new_fd); 
                close(new_fd);
        }    
        close(new_fd);
     }
    while(waitpid(-1,NULL,WNOHANG)>0);
}


int             /* read a text line from a descriptor */
readline (int fd,void *vptr,int maxlen)
{
    int n,rc;
    char c,*ptr;
    
    ptr = vptr;
    for (n=1;nfrom,Usr);
    strcpy(TempMail->content,Usr);
    strcat(TempMail->content,"\n");

    ch=GetSockChar(sockfd);

    readline(sockfd,buf,MAXSIZE);
    CutEndl(buf);
    strcpy(TempMail->to,buf); 
    strcat(TempMail->content,buf);
    strcat(TempMail->content,"\n");
    
    readline(sockfd,buf,MAXSIZE);
    CutEndl(buf);
    strcpy(TempMail->subject,buf);
    strcat(TempMail->content,buf);
    strcat(TempMail->content,"\n");

    read(sockfd,&ch,1);
    i=0;
    while(ch!=0) {
         buf[i++]=ch;
         read(sockfd,&ch,1);
     }
    buf[i]='\0'; 
    strcat(TempMail->content,buf);
    strcat(TempMail->content,"\n");
   
    TempMail->recvtime=time((time_t*)NULL);
  
    MailToStore=(struct message*)malloc(sizeof(struct message));
    MailToStore->to=TempMail->to;
    MailToStore->from=TempMail->from;
    MailToStore->recvtime=TempMail->recvtime;
    MailToStore->sendtime=TempMail->recvtime;
    MailToStore->subject=TempMail->subject;
    MailToStore->content=TempMail->content;
    sprintf(buf,"%d",(int)MailToStore->recvtime);
    MailToStore->messageid=buf;
     
    printf("MailToStore-> content=\n%s\n",MailToStore->content);
                     
    StoreMail(MailToStore);         /* to be written by TZJ */
    SendSockChar(sockfd,'D');
    ch=GetSockChar(sockfd);
    if (ch=='D')  
          return OK;
    else return -1;
}