/* SMTP USING UDP - SERVER
* PROGRAMMED BY: LUBIN N
Programs in NETWORKS By Lubin, GEC Palakkad */
// www.edutalks.org
#include<stdio.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<fcntl.h>
#include<arpa/inet.h>
#define SERV_UDP_PORT 4100
#define MAXMESG 2048
dg_echo(int sockfd, struct sockaddr *pcli_addr, int maxclilen)
{
int n,m,clilen,fid,lsize,i;
char msg[MAXMESG],filename[15],fname[15],buf[512];
printf("______________serv\n");
printf("accept\n");
printf("from: ");
m = recvfrom(sockfd, filename,m, 0 ,pcli_addr, &clilen);
// puts(filename);
for(i=0;i<m;i++)
{
fname[i]=filename[i];
printf("%c",fname[i]);
}
fid=open(fname,O_RDWR | O_CREAT,0777);
n = recvfrom(sockfd, buf,n, 0 ,pcli_addr, &clilen);
printf("\n msg recvd %s\n",buf);
write(fid,buf,n);
close(fid);
}
main(int argc, char *argv[])
{
int sockfd;
char choice;
char buf[200],filename[15],fname[15];
struct sockaddr_in serv_addr,cli_addr;
if((sockfd=socket(AF_INET,SOCK_DGRAM,0))<0)
printf("serveer: caan't open datagram socket");
bzero((char *)&serv_addr,sizeof(serv_addr));
serv_addr.sin_family=AF_INET;
serv_addr.sin_addr.s_addr=htonl(INADDR_ANY);
serv_addr.sin_port=htons(SERV_UDP_PORT);
if(bind(sockfd,(struct sockaddr *)&serv_addr,sizeof(serv_addr))<0)
printf("server: can't bind local address\n");
printf("bind on serv\n");
dg_echo(sockfd,(struct sockaddr *) &cli_addr, sizeof(serv_addr));
}
/* SMTP USING UDP - CLIENT
* PROGRAMMED BY: LUBIN N*/
#include<stdio.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<fcntl.h>
#include<arpa/inet.h>
#define SERV_UDP_PORT 4100
#define MAXLINE 512
dg_cli(FILE *fp,int sockfd,struct sockaddr *pserv_addr,int servlen)
{
int n,m,fd;
char sendline[MAXLINE],recvline[MAXLINE+1],filename[15],fname[15],buf
[512],ch;
printf("___________\n");
printf("Enter the name of sender\n");
gets(sendline);
m=strlen(sendline);
if(sendto(sockfd,sendline,m,0,pserv_addr,servlen)!=m)
printf("error\n");
printf("Enter the name of receiver\n");
gets(recvline);
printf("Enter the message : ");
gets(sendline);
n=strlen(sendline);
if(sendto(sockfd,sendline,n,0,pserv_addr,servlen)!=n)
printf("error\n");
}
main(int argc, char *argv[])
{
int sockfd;
struct sockaddr_in cli_addr,serv_addr;
bzero((char *)&serv_addr,sizeof(serv_addr));
serv_addr.sin_family=AF_INET;
serv_addr.sin_addr.s_addr=(INADDR_ANY);
serv_addr.sin_port=htons(SERV_UDP_PORT);
if((sockfd=socket(AF_INET,SOCK_DGRAM,0))<0)
printf("error\n");
bzero((char *)&cli_addr,sizeof(cli_addr));
cli_addr.sin_addr.s_addr=htonl(INADDR_ANY);
cli_addr.sin_family=AF_INET;
cli_addr.sin_port=htons(0);
if(bind(sockfd,(struct sockaddr*)&cli_addr,sizeof(cli_addr))<0)
printf("error\n");
printf("bind on client\n");
dg_cli(stdin, sockfd, (struct sockaddr *) &serv_addr, sizeof
(serv_addr));
close(sockfd);
exit(0);
}
No comments:
Post a Comment