0% found this document useful (0 votes)
10 views6 pages

SMTP

Uploaded by

sytlog43
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
10 views6 pages

SMTP

Uploaded by

sytlog43
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 6

CLIIENT

#include<stdio.h>
#include<string.h>
#include<sys/socket.h>
#include<netdb.h>
#include<stdlib.h>
#include<netinet/in.h>
#include<sys/types.h>
#include<netinet/in.h>
#include<unistd.h>

#define BUF_SIZE 256

int main(int argc, char* argv[])


{
struct sockaddr_in server,client;
char str[50]="hi";
char mail_f[50],mail_to[50],msg[20],c,I;
int t=0;
socklen_t l=sizeof(server);
if(argc!=3)
printf("Input format not correct");
int sockfd=socket(AF_INET,SOCK_DGRAM,0); if(sockfd==-1)
printf("Error in socket();");

server.sin_family=AF_INET;
server.sin_addr.s_addr=INADDR_ANY;
server.sin_port=htons(atoi(argv[2]));
client.sin_family=AF_INET;
client.sin_addr.s_addr=INADDR_ANY;
client.sin_port=htons(atoi(argv[2]));

printf("Sending hi to server");
sleep(10);
if(sendto(sockfd,str,sizeof(str),0,(struct sockaddr*)&server,sizeof(server))<0)
printf("Error in sento");
if(recvfrom(sockfd, str,sizeof(str),0,(struct sockaddr *)&server,&l)<0)
printf("Error in recv");
printf("\ngreeting msg is %s",str);
if(strncmp(str,"220",3))
printf("\nConn not established in code 220 expected");
printf("\nSending HELO");
strcpy(str, "HELO 127.0.0.1");
if(sendto(sockfd,str,sizeof(str),0,(struct sockaddr *)&server,sizeof(server))<0)
printf("Error in sendto");
sleep(3);
printf("\nReceiving from server");
if((recvfrom(sockfd,str,sizeof(str),0,(struct sockaddr *)&server,&l))<0)
printf("Error in recv");
if(strncmp(str,"250",3))
printf("\nOk not received from server");
printf("\nServer has send %s",str);
printf("\nEnter FROM address: \t");
scanf("%s",mail_f);
strcpy(str, "MAIL FROM");
strcat(str,mail_f);
if(sendto(sockfd,str,sizeof(str),0, (struct sockaddr *)&server,sizeof(server))<0)
printf("Error in sendto");
sleep(3);
if((recvfrom(sockfd,str,sizeof(str),0, (struct sockaddr *)&server,&l))<0)
printf("Error in recv");
if(strncmp(str,"250",3))
printf("\nOk not received from server");
printf("%s", str);
printf("\nEnter TO address: \t");
scanf("%s",mail_to);
strcpy(str,"RCPT TO");
strcat(str,mail_to);
if(sendto(sockfd,str,sizeof(str),0,(struct sockaddr *)&server,sizeof(server))<0)
printf("Error in sendto");
sleep(3);
if((recvfrom(sockfd,str,sizeof(str),0,(struct sockaddr *)&server,&l))<0)
printf("Error in recv");
if(strncmp(str,"250",3))
printf("\nOk not received from server");
printf("%s",str);
printf("\nSending DATA to server");
strcpy(str,"DATA");
if(sendto(sockfd,str,sizeof(str),0,(struct sockaddr *)&server,sizeof(server))<0)
printf("Error in sendto");
sleep(3);
if((recvfrom(sockfd,str,sizeof(str),0,(struct sockaddr *)&server,&l))<0)
printf("Error in recv");
if(strncmp(str,"354",3))
printf("\nOk not received from server");
printf("%s", str);
printf("\nEnter mail body: ");
while(1)
{
c=getchar();
if(c=='$')
{
msg[t]='\0';
break;
}
if(c=='\0')
continue;
msg[t++]=c;
}
if(sendto(sockfd,msg,sizeof(msg),0, (struct sockaddr *)&server,sizeof(server))<0)
printf("Error in sendto");
sleep(3);
printf("\nSending QUIT to server");
strcpy(str, "QUIT");
if(sendto(sockfd,str,sizeof(str),0,(struct sockaddr *)&server,sizeof(server))<0)
printf("Error in sendto");
if((recvfrom(sockfd,str,sizeof(str),0,(struct sockaddr *)&server,&l))<0)
printf("Error in recv");
if(strncmp(str,"221",3))
printf("\nOk not received from server");
printf("\nServer has send GOODBYE.....Closing conn\n");
printf("\n Bye");
close(sockfd);
return 0;
}

OUTPUT
SERVER
#include<stdio.h>
#include<string.h>
#include<sys/socket.h>
#include<arpa/inet.h>
#include<stdlib.h>
#include<sys/types.h>
#include<netinet/in.h>
#include<unistd.h>

#define BUF_SIZE 256

int main(int argc, char* argv[])


{
struct sockaddr_in server,client;
char str[50],msg[20];
if(argc!=2)
printf("Input format not correct");
int sockfd=socket(AF_INET,SOCK_DGRAM,0);
if(sockfd ==-1)
printf("Error in socket();");

server.sin_family=AF_INET;
server.sin_addr.s_addr=INADDR_ANY;
server.sin_port=htons (atoi(argv[1]));
client.sin_family=AF_INET;
client.sin_addr.s_addr=INADDR_ANY;
client.sin_port=htons (atoi(argv[1]));

if(bind(sockfd,(struct sockaddr *)&server, sizeof(server))<0)


printf("Error in bind()! \n");
socklen_t client_len=sizeof(client);
printf("server waiting......");
sleep(3);
if(recvfrom(sockfd, str, 100,0,(struct sockaddr *)&client,&client_len)<0)
printf("Error in recvfrom()!");
printf("\nGot message from client: %s", str);
printf("\nSending greeting message to client: ");
strcpy(str,"220 127.0.0.1");
sleep(10);
if(sendto(sockfd,str,sizeof(str),0,(struct sockaddr *)&client,sizeof(client))<0)
printf("Error in send");
sleep(3);
if((recvfrom(sockfd,str,sizeof(str),0, (struct sockaddr *)&client,&client_len)),0)
printf("Error in recv");
if(strncmp(str, "HELO",4))
printf("\n'HELO' expected from client....");
printf("\n%s", str);
printf("\nSending response...");
strcpy(str,"250 ok");
if(sendto(sockfd,str,sizeof(str),0,(struct sockaddr *)&client, sizeof(client))<0)
printf("Error in send");
sleep(3);
if((recvfrom(sockfd,str,sizeof(str),0, (struct sockaddr *)&client,&client_len))<0)
printf("Error in recv");
if(strncmp(str, "MAIL FROM: ",9))
printf("MAIL FROM expected from client...");
printf("\n%s", str);
printf("\nSending response....");
strcpy(str,"250 ok");
if(sendto(sockfd,str,sizeof(str),0,(struct sockaddr *)&client,sizeof(client))<0)
printf("Error in send");
sleep(3);
if((recvfrom(sockfd,str,sizeof(str),0, (struct sockaddr *)&client,&client_len))<0)
printf("Error in recv");
if(strncmp(str,"RCPT TO",7))
printf("\nRCPT TO expected from client....");
printf("\n%s", str);
printf("\nSending response....");
strcpy(str, "250 ok");
if(sendto(sockfd,str,sizeof(str),0,(struct sockaddr *)&client,sizeof(client))<0)
printf("Error in send");
sleep(3);
if((recvfrom(sockfd,str,sizeof(str),0,(struct sockaddr *)&client,&client_len))<0)
printf("Error in recv");
if(strncmp(str,"DATA",4))
printf("\nDATA expected from client....");
printf("\n %s", str);
printf("\nSending response....");
strcpy(str," 354 Go ahead");
if(sendto(sockfd,str,sizeof(str),0,(struct sockaddr *)&client,sizeof(client))<0)
printf("Error in send");
if((recvfrom(sockfd,msg,sizeof(str),0,(struct sockaddr *)&client,&client_len))<0)
printf("Error in recv");
printf(" mail body received");
printf("\n%s", msg);
if((recvfrom(sockfd,str,sizeof(str),0,(struct sockaddr *)&client,&client_len))<0)
printf("Error in recv");
if(strncmp(str,"QUIT.",4))
printf("quit expected from client....");
printf("\nSending quit...");
strcpy(str," 221 OK");
if(sendto(sockfd,str,sizeof(str),0,(struct sockaddr *)&client,sizeof(client))<0)
printf("Error in send"); -
close(sockfd);
return 0;
}

OUTPUT

You might also like