Code:
#include <windows.h>
#include <winsock.h>
#include <string.h>
#include <stdio.h>
#define PRT_NUM 25
#define RCP_PRT 4000
#define BACKLOG 10
int main(){
char ip_num[32]={"213.180.130.20"};
WSAData wsad;
static SOCKET sockfd,new_fd;
struct sockaddr_in my_addr;
struct sockaddr_in rcp_addr;
int sin_size;
int ret_war=0;
size_t len=0;
char *helo_msg="HELO user.com";
char *quit_msg="QUIT";
char mail_name1[50];
char mail_name2[50];
char data[100];
char checked_mail_name1[61];
char checked_mail_name2[61];
char checked_data[59];
char msg_buf[100];
if(WSAStartup(MAKEWORD(1,1),&wsad)!=0){
fprintf(stderr,"Nie mozna otworzyć połączenia!\n(WSAStartup!=0)");
exit(1);
}
else{fprintf(stdout,"WSAStartup przygotowane...\n");}
sockfd=socket(AF_INET,SOCK_STREAM,0);
if(sockfd==INVALID_SOCKET){
fprintf(stderr,"Nie mozna otworzyć polaczenia!\n(socket==-1)");
exit(1);
}
else{fprintf(stdout,"Gniazdo przygotowane...\n");}
my_addr.sin_family=AF_INET;
my_addr.sin_port =htons(PRT_NUM);
my_addr.sin_addr.s_addr=INADDR_ANY;
memset(&(my_addr.sin_zero),'\0',8);
rcp_addr.sin_family =AF_INET;
rcp_addr.sin_port =htons(PRT_NUM);;
rcp_addr.sin_addr.s_addr=inet_addr(ip_num);
memset(&(rcp_addr.sin_zero),'\0',8);
fprintf(stdout,"Trwa laczenie...\n");
if(connect(sockfd,(struct sockaddr *)&rcp_addr,sizeof(struct sockaddr))==-1){
fprintf(stdout,"Nie mozna nawiazac palaczenia!(connect<0)\n");
exit(1);
}
memset(msg_buf,'\0',100);
ret_war=recv(sockfd,msg_buf,99,0);
if(ret_war<0){
fprintf(stdout,"Nie mozna nawiazac polaczanie!(recv<0)\n");
exit(1);
}
fprintf(stdout,"Nawiazano polaczenie z serwerem...\n");
printf("%s",msg_buf);
printf("\nPodaj nazwe swojego maila : ");
scanf("%s",&mail_name1);
printf("Podaj nazwe maila docelowego:");
scanf("%s",&mail_name2);
printf("Podaj tresc wiadomosci:");
scanf("%s",&data);
printf("Przetwarzanie danych...");
sprintf(checked_mail_name1,"MAIL FROM: <%s>",mail_name1);
sprintf(checked_mail_name2,"RCPT TO: <%s>",mail_name2);
sprintf(checked_data,"DATA: %s\n.\n",data);
printf("\nWysyłanie danych na serwer...");
len=strlen(helo_msg);
len=send(sockfd,&helo_msg[0],len,0);
if(len==SOCKET_ERROR){
printf("\nWiadomosc nie wyslana!\n");
exit(1);
}
memset(msg_buf,'\0',100);
ret_war=recv(sockfd,msg_buf,99,0);
printf("%s",msg_buf);
len=strlen(checked_mail_name1);
if(len!=send(sockfd,checked_mail_name1,len,0)||len==SOCKET_ERROR){
printf("\nWiadomosc nie wyslana!");
exit(1);
}
memset(msg_buf,'\0',100);
ret_war=recv(sockfd,msg_buf,99,0);
printf("%s",msg_buf);
len=strlen(checked_mail_name2);
if(len!=send(sockfd,checked_mail_name2,len,0)||len==SOCKET_ERROR){
printf("\nWiadomosc nie wyslana!");
exit(1);
}
memset(msg_buf,'\0',100);
ret_war=recv(sockfd,msg_buf,99,0);
printf("%s",msg_buf);
len=strlen(checked_data);
if(len!=send(sockfd,checked_data,len,0)||len==SOCKET_ERROR){
printf("\nWiadomosc nie wyslana!");
exit(1);
}
memset(msg_buf,'\0',100);
ret_war=recv(sockfd,msg_buf,99,0);
printf("%s",msg_buf);
len=strlen(quit_msg);
if(len!=send(sockfd,quit_msg,len,0)||len==SOCKET_ERROR){
printf("\nWiadomosc nie wyslana!");
exit(1);
}
memset(msg_buf,'\0',100);
ret_war=recv(sockfd,msg_buf,99,0);
printf("%s",msg_buf);
printf("\nWiadomosc wyslana pomyslnie!");
WSACleanup();
getchar();
return 0;
}
the error messages are in polish so don't bother with them