Saturday, November 8, 2008

A bunch of c files for file transfer using tcp/ip sockets

There are 2 files :
1. server.c
2. client.c


server.c :
#include <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h>  
#include <arpa/inet.h>
#include <stdio.h>
 
#define PORT 2080
 
main()
{
        int sock1,sock2, clength;
        sock1 =  socket(AF_INET,SOCK_STREAM,0);
        struct sockaddr_in serv,cli;
 
        serv.sin_family = AF_INET;
        serv.sin_port = htons(PORT);
        serv.sin_addr.s_addr = inet_addr("127.0.0.1");
        bind(sock1,(struct sockaddr *)&serv, sizeof(serv));
        listen(sock1,5);
        clength = sizeof(cli);
        int i=0;
        char buf[50];
        sock2 = accept(sock1,(struct sockaddr *)&cli,&clength);
        printf("\n Client Connected\n");
        FILE* fp = fopen("server.txt","r");
        while(!feof(fp)){
                bzero(buf,sizeof(buf));
                fread(buf,sizeof(char),50,fp);
                write(sock2,buf,50);
        }
        write(sock2,"quit1234",50);
        fclose(fp);
        return 0;
}
 
client.c :
#include <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h>  
#include <arpa/inet.h>
#include <stdio.h>
 
#define PORT 2080
 
main()
{
        int sock1;
        sock1 =  socket(AF_INET,SOCK_STREAM,0);
        struct sockaddr_in serv;
 
        serv.sin_port = htons(PORT);
        printf("%x %x\n",PORT,htons(PORT));
        serv.sin_family = AF_INET;
        serv.sin_addr.s_addr = inet_addr("127.0.0.1");
        printf("client connecting\n");
        connect(sock1, (struct sockaddr *)&serv,sizeof(serv));
        char buf[50];
        FILE* fp = fopen("client.txt","w");
        while(1){
                bzero(buf,sizeof(buf));
                read(sock1,buf,50);
                if(strcmp(buf,"quit1234")==0)
                {
                        break;  
                }
                fprintf(fp,"%s",buf);
        }
        fclose(fp);
}

No comments:

Blog Archive