Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Activity 7:
- Q7: Chat App using TCP/IP protocol.
- Server Side:
- #include<stdio.h>
- #include<stdlib.h>
- #include<string.h>
- #include<sys/socket.h>
- #include<netdb.h>
- #include<arpa/inet.h>
- void error(char *msg)
- {
- perror(msg);
- exit(1);
- }
- int main(int argc,char* argv[])
- {
- int sockfd,newsockfd,portno;
- char recvbuffer[256],sendbuffer[256];
- struct sockaddr_in ser_addr,cli_addr;
- int i;
- if(argc<2)
- error("./server portno");
- portno=atoi(argv[1]);
- bzero((char*)&ser_addr,sizeof(ser_addr));
- ser_addr.sin_family=AF_INET;
- ser_addr.sin_addr.s_addr=INADDR_ANY;
- ser_addr.sin_port=htons(portno);
- sockfd=socket(AF_INET,SOCK_STREAM,0);
- if(sockfd==-1)
- error("error in socket descriptor");
- printf("\nsocket created\n");
- if(bind(sockfd,(struct sockaddr*)&ser_addr,sizeof(ser_addr))==-1)
- error("error in binding");
- printf("\nbinding successful\n");
- if(listen(sockfd,5)==-1)
- error("error in listening");
- printf("\nlisten successfully\n");
- bzero(recvbuffer,sizeof(recvbuffer));
- bzero(sendbuffer,sizeof(sendbuffer));
- newsockfd=accept(sockfd,(struct sockaddr*)NULL,NULL);
- i=fork();
- if(i==0)
- {
- printf("\nfork reading\n");
- while(1)
- {
- if(read(newsockfd,recvbuffer,sizeof(recvbuffer))<0)
- error("error in reading");
- printf("\nclient:%s\n",recvbuffer);
- bzero(recvbuffer,sizeof(recvbuffer));
- }
- }
- else
- {
- printf("\n fork writing\n");
- while(1)
- {
- scanf("%s",sendbuffer);
- if(write(newsockfd,sendbuffer,sizeof(sendbuffer))<0)
- error("error in writing");
- }
- }
- close(newsockfd);
- return 0;
- }
- Client Side:
- #include<stdio.h>
- #include<stdlib.h>
- #include<string.h>
- #include<sys/socket.h>
- #include<netdb.h>
- #include<arpa/inet.h>
- void error(char *msg)
- {
- perror(msg);
- exit(1);
- }
- int main(int argc,char* argv[])
- {
- int sockfd,portno;
- char recvbuffer[256],sendbuffer[256];
- struct sockaddr_in ser_addr;
- struct hostent* server;
- int i;
- if(argc<3)
- error("./client hostname portno");
- server=gethostbyname(argv[1]);
- portno=atoi(argv[2]);
- bzero((char*)&ser_addr,sizeof(ser_addr));
- ser_addr.sin_family=AF_INET;
- bcopy((char*)server->h_addr,(char*)&ser_addr.sin_addr.s_addr,server->h_length);
- ser_addr.sin_port=htons(portno);
- sockfd=socket(AF_INET,SOCK_STREAM,0);
- if(sockfd==-1)
- error("error in socket descriptor");
- printf("\nsocket created\n");
- if(connect(sockfd,(struct sockaddr*)&ser_addr,sizeof(ser_addr))==-1)
- error("error in connect");
- printf("\nconnect successfully\n");
- bzero(recvbuffer,sizeof(recvbuffer));
- bzero(sendbuffer,sizeof(sendbuffer));
- i=fork();
- if(i==0)
- {
- printf("\nfork reading\n");
- while(1)
- {
- if(read(sockfd,recvbuffer,sizeof(recvbuffer))<0)
- error("error in reading");
- printf("\nserver:%s\n",recvbuffer);
- bzero(recvbuffer,sizeof(recvbuffer));
- }
- }
- else
- {
- printf("\n fork writing\n");
- while(1)
- {
- scanf("%s",sendbuffer);
- if(write(sockfd,sendbuffer,sizeof(sendbuffer))<0)
- error("error in writing");
- }
- }
- close(sockfd);
- return 0;
- }
- Output:
- Server:
- Client:
- Activity 8
- Q8. Develop a TCP Client/Server application for transferring a text file from client to server.
- SERVER CODE :
- #include<stdio.h>
- #include<stdlib.h>
- #include<string.h>
- #include<sys/socket.h>
- #include<netdb.h>
- #include<arpa/inet.h>
- void error(char *msg)
- {
- perror(msg);
- exit(1);
- }
- int main(int argc,char* argv[])
- {
- int sockfd,newsockfd,portno;
- char buffer[256];
- struct sockaddr_in ser_addr;
- if(argc<2)
- error("./server portno");
- portno=atoi(argv[1]);
- bzero((char*)&ser_addr,sizeof(ser_addr));
- ser_addr.sin_family=AF_INET;
- ser_addr.sin_addr.s_addr=INADDR_ANY;
- ser_addr.sin_port=htons(portno);
- sockfd=socket(AF_INET,SOCK_STREAM,0);
- if(sockfd==-1)
- error("error in socket descriptor");
- printf("\nsocket created\n");
- if(bind(sockfd,(struct sockaddr*)&ser_addr,sizeof(ser_addr))==-1)
- error("error in binding");
- printf("\nbinding successful\n");
- if(listen(sockfd,5)==-1)
- error("error in listening");
- printf("\nlisten successfully\n");
- newsockfd=accept(sockfd,NULL,NULL);
- FILE* fp;
- int nread;
- fp=fopen("sample.txt","ab");
- if(fp==NULL)
- error("error in file opening");
- while((nread=read(newsockfd,buffer,sizeof(buffer)))>0)
- {
- fwrite(buffer,1,nread,fp);
- bzero(buffer,sizeof(buffer));
- }
- close(newsockfd);
- return 0;
- }
- CLIENT CODE :
- #include<stdio.h>
- #include<stdlib.h>
- #include<string.h>
- #include<sys/socket.h>
- #include<netdb.h>
- #include<arpa/inet.h>
- void error(char *msg)
- {
- perror(msg);
- exit(1);
- }
- int main(int argc,char* argv[])
- {
- int sockfd,portno;
- char buffer[256];
- struct sockaddr_in ser_addr;
- struct hostent* server;
- if(argc<3)
- error("./client hostname portno");
- server=gethostbyname(argv[1]);
- portno=atoi(argv[2]);
- bzero((char*)&ser_addr,sizeof(ser_addr));
- ser_addr.sin_family=AF_INET;
- bcopy((char*)server->h_addr,(char*)&ser_addr.sin_addr.s_addr,server->h_length);
- ser_addr.sin_port=htons(portno);
- sockfd=socket(AF_INET,SOCK_STREAM,0);
- if(sockfd==-1)
- error("error in socket descriptor");
- printf("\nsocket created\n");
- if(connect(sockfd,(struct sockaddr*)&ser_addr,sizeof(ser_addr))==-1)
- error("error in connect");
- printf("\nconnect successfully\n");
- FILE* fp;
- int nread;
- fp=fopen("sample1.txt","r");
- if(fp==NULL)
- error("error in file opening");
- while(1)
- {
- nread=fread(buffer,1,sizeof(buffer),fp);
- if(nread>0)
- write(sockfd,buffer,nread);
- if(nread<256)
- {
- if(feof(fp))
- printf("\nEnd of file\n");
- if(ferror(fp))
- printf("\n error in file\n");
- break;
- }
- }
- close(sockfd);
- return 0;
- }
- Output:
- Server Side:
- Client Side:
- ACTIVITY 9
- Question :
- Implement a TCP based server program to authenticate the client’s
- Username and
- Password. The authenticity of the client must be sent as
- the reply mess age to the client and display the
- same on the standard output.
- Code :Server :
- #include <stdio.h>
- #include <stdlib.h>
- #include <unistd.h>
- #include <errno.h>
- #include <string.h>
- #include <netdb.h>
- #include <sys/types.h>
- #include <netinet/in.h>
- #include <sys/socket.h>
- #include <arpa/inet.h>
- int main(int argc, char *argv[])
- {
- int sock_des,port,n1,n2,s1,s2;
- char null_character;
- char buffer1[100],buffer2[100],buffer3[100],buffer4[100];
- int length,new_des;
- struct sockaddr_in server_addr,client_addr;
- bzero(buffer3,sizeof(buffer3));
- printf("\n Input Authentic Username :\n");
- scanf("%s",buffer3);
- bzero(buffer4,sizeof(buffer4));
- printf("\n Input Authentic Password :\n");
- scanf("%s",buffer4);
- if(argc!=2)
- {
- printf("Usage: ./server port\n");
- exit(1);
- }
- port= atoi(argv[1]);
- if((sock_des=socket(AF_INET,SOCK_STREAM,0))==-1)
- {
- perror("socket");
- exit(1);
- }
- server_addr.sin_family = AF_INET;
- server_addr.sin_port = htons(port);
- server_addr.sin_addr.s_addr= htonl(INADDR_ANY);
- if (bind(sock_des,(const struct sockaddr *)&server_addr,sizeof(struct sockaddr))==-1)
- {
- perror("bind");
- exit(1);
- }
- if( listen(sock_des,5)==-1)
- {
- perror("listen");
- exit(1);
- }
- printf("Server is listening at port %d \n", port);
- while(1)
- {
- if((new_des=accept(sock_des,(struct sockaddr *)&client_addr,&length))==-1)
- {
- perror("accept");
- exit(1);
- }
- bzero(buffer1,sizeof(buffer1));
- n1=read(new_des,buffer1,sizeof(buffer1));
- buffer1[n1]=null_character;
- if((s1=strcmp(buffer1,buffer3))==0)
- {
- write(new_des,"Username Match!Enter Password",30);
- printf("Username Match !!!\n");
- bzero(buffer2,sizeof(buffer2));
- n2=read(new_des,buffer2,sizeof(buffer2));
- buffer2[n2]=null_character;
- if((s2=strcmp(buffer2,buffer4))==0)
- {
- write(new_des,"Password Match",15);
- printf("Password Match !!!\n");
- }
- else
- {
- write(new_des,"Password NOT Match",19);
- printf("Password NOT Match !!!\n");
- }
- }
- else
- {
- write(new_des,"Username Not Match",19);
- printf("Username Not Match !!!\n");
- }
- close(new_des);
- }
- }
- Client :-
- #include <stdio.h>
- #include <stdlib.h>
- #include <unistd.h>
- #include <errno.h>
- #include <string.h>
- #include <netdb.h>
- #include <sys/types.h>
- #include <netinet/in.h>
- #include <sys/socket.h>
- #include <arpa/inet.h>
- int main(int argc,char *argv[])
- {
- int sock_des,port,n;
- char null_character;
- struct hostent *host;
- char buffer1[100],buffer2[100],buffer3[100],buffer4[100];
- struct sockaddr_in server_addr;
- if(argc!=3)
- {
- printf("Usage: ./client hostname port\n");
- exit(1);
- }
- if((host=gethostbyname(argv[1]))==NULL)
- {
- printf("Unknown Host\n");
- exit(1);
- }
- port = atoi(argv[2]);
- if((sock_des=socket(AF_INET,SOCK_STREAM,0))==-1)
- {
- perror("socket");
- exit(1);
- }
- server_addr.sin_family = AF_INET;
- server_addr.sin_port = htons(port);
- server_addr.sin_addr = *((struct in_addr *)host->h_addr);
- if(connect(sock_des,(struct sockaddr *)&server_addr,sizeof(struct sockaddr))==-1)
- {
- perror("connect");
- exit(1);
- }
- bzero(buffer1,sizeof(buffer1));
- printf("Enter the Username :\n");
- scanf("%s",buffer1);
- write(sock_des,buffer1,sizeof(buffer1));
- bzero(buffer4,sizeof(buffer4));
- n=read(sock_des,buffer4,sizeof(buffer4));
- buffer4[n]= null_character;
- printf("Server Sent : %s\n", buffer4);
- bzero(buffer2,sizeof(buffer2));
- printf("Enter the Password :\n");
- scanf("%s",buffer2);
- write(sock_des,buffer2,sizeof(buffer2));
- bzero(buffer3,sizeof(buffer3));
- n=read(sock_des,buffer3,sizeof(buffer3));
- buffer3[n]=null_character;
- printf("Server Sent : %s\n", buffer3);
- close(sock_des);
- }
- Server Side:
- Client Side:
- Activity 10:
- Aim: To Implement a message transfer from client to server
- process using UDP.
- Server:
- #include <arpa/inet.h>
- #include <netinet/in.h>
- #include <stdio.h>
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <unistd.h>
- #include <stdlib.h>
- #include <string.h>
- #define BUFLEN 512
- #define PORT 9930
- void err(char *str)
- {
- perror(str);
- exit(1);
- }
- int main(void)
- {
- struct sockaddr_in my_addr, cli_addr;
- int sockfd, i;
- socklen_t slen=sizeof(cli_addr);
- char buf[BUFLEN];
- if ((sockfd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP))==-1)
- err("socket");
- else
- printf("Server : Socket() successful\n");
- bzero(&my_addr, sizeof(my_addr));
- my_addr.sin_family = AF_INET;
- my_addr.sin_port = htons(PORT);
- my_addr.sin_addr.s_addr = htonl(INADDR_ANY);
- if (bind(sockfd, (struct sockaddr* ) &my_addr, sizeof(my_addr))==-1)
- err("bind");
- else
- printf("Server : bind() successful\n");
- while(1)
- {
- if (recvfrom(sockfd, buf, BUFLEN, 0, (struct sockaddr*)&cli_addr,
- &slen)==-1)
- err("recvfrom()");
- printf("Received packet from %s:%d\nData: %s\n\n",
- inet_ntoa(cli_addr.sin_addr), ntohs(cli_addr.sin_port), buf);
- }
- close(sockfd);
- return 0;
- }
- Client:
- #include <arpa/inet.h>
- #include <netinet/in.h>
- #include <stdio.h>
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <unistd.h>
- #include <stdlib.h>
- #include <string.h>
- #define BUFLEN 512
- #define PORT 9930
- void err(char *s)
- {
- perror(s);
- exit(1);
- }
- int main(int argc, char** argv)
- {
- struct sockaddr_in serv_addr;
- int sockfd, i, slen=sizeof(serv_addr);
- char buf[BUFLEN];
- if(argc != 2)
- {
- printf("Usage : %s <Server-IP>\n",argv[0]);
- exit(0);
- }
- if ((sockfd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP))==-1)
- err("socket");
- bzero(&serv_addr, sizeof(serv_addr));
- serv_addr.sin_family = AF_INET;
- serv_addr.sin_port = htons(PORT);
- if (inet_aton(argv[1], &serv_addr.sin_addr)==0)
- {
- fprintf(stderr, "inet_aton() failed\n");
- exit(1);
- }
- while(1)
- {
- printf("\nEnter data to send(Type exit and press enter to exit) : ");
- scanf("%[^\n]",buf);
- getchar();
- if(strcmp(buf,"exit") == 0)
- exit(0);
- if (sendto(sockfd, buf, BUFLEN, 0, (struct sockaddr*)&serv_addr,
- slen)==-1)
- err("sendto()");
- }
- close(sockfd);
- return 0;
- }
- Output:
- Server side;
- Client Side:
- Activity 11:
- AIM: To write a program for UDP echo client server.
- CODE :
- SERVER:
- #include<sys/types.h>
- #include<sys/socket.h>
- #include<netinet/in.h>
- #include<unistd.h>
- #include<netdb.h>
- #include<stdio.h>
- #include<string.h>
- #include<arpa/inet.h>
- #define MAXLINE 1024
- int main(int argc,char **argv)
- {
- int sockfd;
- int n;
- socklen_t len;
- char msg[1024];
- struct sockaddr_in servaddr,cliaddr;
- sockfd=socket(AF_INET,SOCK_DGRAM,0);
- bzero(&servaddr,sizeof(servaddr));
- servaddr.sin_family=AF_INET;
- servaddr.sin_addr.s_addr=INADDR_ANY;
- servaddr.sin_port=htons(5035);
- printf("\n\n Binded");
- bind(sockfd,(struct sockaddr*)&servaddr,sizeof(servaddr));
- printf("\n\n Listening...");
- for(;;)
- {
- printf("\n ");
- len=sizeof(cliaddr);
- n=recvfrom(sockfd,msg,MAXLINE,0,(struct
- sockaddr*)&cliaddr,&len);
- printf("\n Client's Message : %s\n",msg);
- if(n<6)
- perror("send error");
- sendto(sockfd,msg,n,0,(struct sockaddr*)&cliaddr,len);
- }
- return 0;
- }
- CLIENT:
- #include<sys/types.h>
- #include<sys/socket.h>
- #include<netinet/in.h>
- #include<string.h>
- #include<arpa/inet.h>#include<string.h>
- #include<arpa/inet.h>
- #include<stdio.h>
- #define MAXLINE 1024
- int main(int argc,char* argv[])
- {
- int sockfd;
- int n;
- socklen_t len;
- char sendline[1024],recvline[1024];
- struct sockaddr_in servaddr;
- strcpy(sendline,"");
- printf("\n Enter the message : ");
- scanf("%s",sendline);
- sockfd=socket(AF_INET,SOCK_DGRAM,0);
- bzero(&servaddr,sizeof(servaddr));
- servaddr.sin_family=AF_INET;
- servaddr.sin_addr.s_addr=inet_addr("127.0.0.1");
- servaddr.sin_port=htons(5035);
- connect(sockfd,(struct sockaddr*)&servaddr,sizeof(servaddr));
- len=sizeof(servaddr);
- sendto(sockfd,sendline,MAXLINE,0,(struct sockaddr*)&servaddr,len);
- n=recvfrom(sockfd,recvline,MAXLINE,0,NULL,NULL);
- recvline[n]=0;
- printf("\n Server's Echo : %s\n\n",recvline);
- return 0;
- }
- Output:
- Server Side;
- Client Side:
Add Comment
Please, Sign In to add comment