#include #include #include #include #include #include #include #include #define POP3SERVPORT 110 #define MAXDATASIZE 4096 main(int argc, char *argv[]){ int sockfd; struct hostent *host; struct sockaddr_in serv_addr; char *POPMessage[]={ "USER userid\r\n", "PASS password\r\n", "STAT\r\n", "LIST\r\n", "RETR 1\r\n", "DELE 1\r\n", "QUIT\r\n", NULL }; int iLength; int iMsg=0; int iEnd=0; char buf[MAXDATASIZE]; if((host=gethostbyname("your.server"))==NULL) { perror("gethostbyname error"); exit(1); } if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1){ perror("socket error"); exit(1); } serv_addr.sin_family=AF_INET; serv_addr.sin_port=htons(POP3SERVPORT); serv_addr.sin_addr = *((struct in_addr *)host->h_addr); bzero(&(serv_addr.sin_zero),8); if (connect(sockfd, (struct sockaddr *)&serv_addr,sizeof(struct sockaddr))==-1){ perror("connect error"); exit(1); } do { send(sockfd,POPMessage[iMsg],strlen(POPMessage[iMsg]),0); printf("have sent: %s",POPMessage[iMsg]); iLength=recv(sockfd,buf+iEnd,sizeof(buf)-iEnd,0); iEnd+=iLength; buf[iEnd]='\0'; printf("received: %s,%d\n",buf,iMsg); iMsg++; } while (POPMessage[iMsg]); close(sockfd); }
|