1.
Using TCP/IP sockets, write a client – server program to make the client send the file name
     and to make the server send back the contents of the requested file if present.
//TCP SERVER PROGRAM
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<sys/fcntl.h>
int main(int argc, char *argv[])
{
     int fd,sockfd, newsockfd, clilen,portno,n;
     struct sockaddr_in serv_addr,cli_addr;
     char buffer[4096];
     if (argc<2)
     {
           fprintf(stderr,"no port\n");
           exit(1);
     }
     portno=atoi(argv[1]);
     sockfd = socket(AF_INET, SOCK_STREAM,0);
     if(sockfd < 0)
           perror("error opening 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(portno);
     if(bind(sockfd,(struct sockaddr
*)&serv_addr,sizeof(serv_addr))<0)
           perror("error binding");
     listen(sockfd,5);
     clilen = sizeof(cli_addr);
     printf("SERVER waiting for the CLIENT....\n");
     while(1)
     {
           newsockfd = accept(sockfd,(struct sockaddr
*)&cli_addr,&clilen);
           if(newsockfd < 0)
                perror("error on accept");
           bzero(buffer,4096);
           read(newsockfd,buffer,4096);
           fd=open(buffer,O_RDONLY);
           if(fd<0)
                perror("file open error ");
           while(1)
           {
                 n=read(fd,buffer,4096);
                 if(n<=0)
                      exit(0);
                 write(newsockfd,buffer,n);
                 printf("Transfer Completed\n");
           }
           close(fd);
           close(newsockfd);
     }
     return 0;
}
/*
OUTPUT:-
$ cc server_tcp.c
$ ./a.out 5003
SERVER waiting for the CLIENT....
Transfer Completed.
*/
//TCP CLIENT PROGRAM
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<sys/fcntl.h>
#include<arpa/inet.h>
int main(int argc, char *argv[])
{
     int sockfd, portno,n;
     struct sockaddr_in serv_addr;
     char buffer[4096],*servip;
     if (argc<4)
     {
           fprintf(stderr,"usage %s serverip filename   port\n",
argv[0]);
           exit(0);
     }
     servip=argv[1];
     portno = atoi(argv[3]);
     sockfd = socket(AF_INET, SOCK_STREAM,0);
     if(sockfd < 0)
           perror("error opening socket");
     printf("client online\n");
     bzero((char *)&serv_addr,sizeof(serv_addr));
     serv_addr.sin_family = AF_INET;
     serv_addr.sin_addr.s_addr=inet_addr(servip);
     serv_addr.sin_port = htons(portno);
     if(connect(sockfd,(struct sockaddr
*)&serv_addr,sizeof(serv_addr))<0)
           perror("error connecting");
     write(sockfd,argv[2],strlen(argv[2])+1);
     bzero(buffer,4096);
     n = read(sockfd,buffer,4096);
     if(n<=0)
     {
           perror("file not found");
           exit(0);
     }
     write(1,buffer,n);
}
/*
OUTPUT:-
$ cc client_tcp.c
$ ./a.out 127.0.0.1 ex.txt 5003
client online
hello !
Welcome to BNMIT
*/
cookies:
 1.sudo service apache2 start
2. sudo service apache2 status
3.sudo htpasswd -c /etc/apache2/.htpasswd seed
Set the passwords and retype it
4.sudo cat /etc/apache2/.htpasswd
5.sudo nano /etc/apache2/sites-available/000-default.conf
After log.combine type below code
6.<Directory "/var/www/html">
AuthType Basic
AuthName "RESTRICTED"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user
</Directory>
C+O
C+x
Enter
C+x
7.sudo service apache2 restart
Open firefox
Localhost/
It should ask password