Skip to main content

FTP simulation to read the file contents

server.c

#include "stdio.h"
#include "string.h"
#include "sys/types.h"
#include "sys/socket.h"
#include "arpa/inet.h"
#include "netinet/in.h"
#define SA struct sockaddr

int main(int argc,char** argv) {
    int sockfd;
    int n=0,clilen;
    char fname[20],content[2000],ch;
    FILE *fp;
    struct sockaddr_in servaddr,cliaddr;

    if(argc!=2) {
    printf("usage ./server PORT\n");
    return 0;
    }

    //create socket
    sockfd = socket(AF_INET,SOCK_DGRAM,0);

    //fill structure
    servaddr.sin_family = AF_INET;
    servaddr.sin_port = htons(atoi(argv[1]));
    servaddr.sin_addr.s_addr = INADDR_ANY;

    //bind
    bind(sockfd,(SA*)&servaddr,sizeof(servaddr));

    //getting filename from client
    clilen=sizeof(cliaddr);
    recvfrom(sockfd,fname,sizeof(fname),0,(SA*)&cliaddr,&clilen);

    //open the file for reading 
    fp = fopen(fname,"r"); 

    while(1) {
    ch = fgetc(fp);
    if(ch!=EOF) {
        content[n++]=ch;
    }
    else
        break;
    }
    fputs(content,stdout);
    //send the file content to client
    sendto(sockfd,content,sizeof(content),0,(SA*)&cliaddr,sizeof(cliaddr));

    return 0;
}

client.c

#include "stdio.h"
#include "sys/types.h"
#include "sys/socket.h"
#include "arpa/inet.h"
#include "netinet/in.h"
#include "string.h"
#define SA struct sockaddr

int main(int argc,char** argv) {
    int sockfd,len;
    struct sockaddr_in servaddr;
    char fname[20],content[2000];

    if(argc!=3) {
    printf("usage ./client PORT FILENAME\n");
    return 0;
    }
    strcpy(fname,argv[2]);

    //create socket
    sockfd = socket(AF_INET,SOCK_DGRAM,0);

    //fill structure
    servaddr.sin_family = AF_INET;
    servaddr.sin_port = htons(atoi(argv[1]));
    servaddr.sin_addr.s_addr = inet_addr("127.0.0.1");

    //send filename
    sendto(sockfd,fname,sizeof(fname),0,(SA*)&servaddr,sizeof(servaddr));

    //receive the file content from server
    len=sizeof(servaddr);
    bzero(content,sizeof(content));
    recvfrom(sockfd,content,sizeof(content),0,NULL,NULL);

    //print the file contents
    printf("contents of the %s:\n\n",fname);
    fputs(content,stdout);

    return 0;
}

Comments

Popular posts from this blog

விண்டோஸை விட லினக்ஸ் சிறந்தது: பத்து காரணங்கள்

லினக்ஸ் பயன்படுத்த கடினம், விண்டோஸே சிறந்தது என கருதுபவர்களுக்காக 1. வைரஸ் அபாயம் கிடையாது: ஆம். பொரும்பாலான வைரஸ் நிரல்கள் விண்டோஸிற்காக எழுதப்படுபவை. லினக்ஸால் win32  நிரல்களை  செயல்படுத்த முடியாது. எனவே வைரஸ் வரும் என்ற கவலை வேண்டாம். 2. திற-மூலமென்பொருள் - விண்டோஸ் போல் அல்லாமல் லினக்ஸ் ஆனது திற-மூல-இயங்குதளம்(open-source).  எனவே நம்முடைய தேவைக்கு ஏற்ப நாம் இதனை மாற்றவே, பிறருக்கு அளிக்கவோ முழு சுதந்திரம் உண்டு.

சிடி/டிவிடிகளை காப்பி செய்யாதீர்கள்.

நாம் பொதுவாக டிவிடி படங்களை நம்முடைய கணினிகளில் டிவிடி டிரைவ்களில் போட்டு பார்ப்பது பழக்கம். நாம் நண்பர்களிடம் இருந்தோ அல்லது வேறுயாரிடமாவது இருந்தோ படங்களை வாங்கி உடனே பார்த்துவிட்டு தருவதற்கு முடியவில்லை என்றால் நாம் படங்களை காப்பி செய்து அதனை நம் கணினீயில் சேமிப்போம். அவ்வாறு சேமித்த படங்களை டிவிடி டிரைவில் போட்டு பார்ப்பது போன்றே சௌகரியமாக பார்ப்பது என்பது இயலாது. ஒவ்வொரு fileஐயும் நாம் விடியோ ப்ளேயரில் திறக்க வேண்டும். அதில் பலவிதமான fileகள் இருக்கும். நாம் ஒவ்வொன்றாக திறந்து நாம் பார்க்க வேண்டிய அந்த படத்தை பார்ப்பதற்குள் நேரம் ஆகிவிடும். சில fileகள் ஒழுங்காக காப்பி ஆகியிருக்காது. சில டிவிடிக்கள் காப்பி ஆக மறுக்கும்.

need your response

It has been a long time... my rest hours are reduced i only sleep for 5 to 6 hours a day.. so i can't post frequently.. sorry friends.. my university is a good place to refine myself. yes..! thoughts about my programming computers are refined there.. i always wanted share my experience.. but i feared of thinking that it will helpful for you or not.. most of us don't like to hear stories of others. so i stopped blogging and of course having less time.. i have earned some good friends there... who are interested in open-source technology.. very few of us only know the linux platform.. this semester mini project also in open softwares like mysql, postgrey sql i will start blogging my experience if you are interested.. regards, Mani G