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;n from,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; }