DIGIT-ARC read-only archive · snapshot: July 23, 2026

Need help in Client server program

7 posts · originally from https://geek.digit.in/community/threads/need-help-in-client-server-program.150431/

dashang
dashang Original post #1
Dec 25, 2011 at 11:32 AM
I want to implement a program in linux using c/c++ to implement client server architecture using pocket programming. It should be such that when a user
Stores a file on server the server slits the file and stores it on 2 or more server. Whenever user retrieves the file, the server retrieves the file again from different server forwards all the fragments to the user and display it in single file.

Please reply
nims11
nims11 #2
Dec 25, 2011 at 12:44 PM
I want to implement a program in linux using c/c++ to implement client server architecture using pocket programming. It should be such that when a user
Stores a file on server the server slits the file and stores it on 2 or more server. Whenever user retrieves the file, the server retrieves the file again from different server forwards all the fragments to the user and display it in single file.

Please reply

that's socket programming :|

use socket() and connect() calls. here is an excellent tut Linux Howtos: C/C++ -> Sockets Tutorial
splitting and joining is easy file handling problem. :)
U
Dec 26, 2011 at 1:31 AM
google for beej's
dashang
dashang #4
Dec 26, 2011 at 9:52 AM
guys but what about
"user stores a file on server the server slits the file and stores it on 2 or more server." Please help in this.
If possible can you code it for me because i dont know anything about socket and our professors are recklesss. they just say do it , they dont teach also
nims11
nims11 #5
Dec 26, 2011 at 2:05 PM
guys but what about
"user stores a file on server the server slits the file and stores it on 2 or more server." Please help in this.
If possible can you code it for me because i dont know anything about socket and our professors are recklesss. they just say do it , they dont teach also

this is the case in all(most) colleges in India. so get used to it.

At least first go through that link i have given. it has very well explained sockets under Linux. Then attempt the program and if you face any problems, we are here to help. :)
Garbage
Garbage #6
Dec 26, 2011 at 2:52 PM
First try to code simple program which stores a single file using the tutorial mentioned by nims11. Then post the code. Other members might help you in further coding.
dashang
dashang #7
Jan 7, 2012 at 12:53 PM
server.C program
Code:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h> 
#include <sys/socket.h>
#include <netinet/in.h>

void error(const char *msg)
{
    perror(msg);
    exit(1);
}

int main(int argc, char *argv[])
{
     int sockfd, newsockfd, portno;
     socklen_t clilen;
     char buffer[256];
     struct sockaddr_in serv_addr, cli_addr;
     int n;
     if (argc < 2) {
         fprintf(stderr,"ERROR, no port provided\n");
         exit(1);
     }
     sockfd = socket(AF_INET, SOCK_STREAM, 0);
     if (sockfd < 0) 
        error("ERROR opening socket");
     bzero((char *) &serv_addr, sizeof(serv_addr));
     portno = atoi(argv[1]);
     serv_addr.sin_family = AF_INET;
     serv_addr.sin_addr.s_addr = INADDR_ANY;
     serv_addr.sin_port = htons(portno);
     if (bind(sockfd, (struct sockaddr *) &serv_addr,
              sizeof(serv_addr)) < 0) 
              error("ERROR on binding");
     listen(sockfd,5);
     clilen = sizeof(cli_addr);
     newsockfd = accept(sockfd, 
                 (struct sockaddr *) &cli_addr, 
                 &clilen);
     if (newsockfd < 0) 
          error("ERROR on accept");
     bzero(buffer,256);
     n = read(newsockfd,buffer,255);
     if (n < 0) error("ERROR reading from socket");
     printf("Here is the message: %s\n",buffer);
     n = write(newsockfd,"I got your message",18);
     if (n < 0) error("ERROR writing to socket");
     close(newsockfd);
     close(sockfd);
     return 0; 
}

client.C
Code:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h> 

void error(const char *msg)
{
    perror(msg);
    exit(0);
}

int main(int argc, char *argv[])
{
    int sockfd, portno, n;
    struct sockaddr_in serv_addr;
    struct hostent *server;

    char buffer[256];
    if (argc < 3) {
       fprintf(stderr,"usage %s hostname port\n", argv[0]);
       exit(0);
    }
    portno = atoi(argv[2]);
    sockfd = socket(AF_INET, SOCK_STREAM, 0);
    if (sockfd < 0) 
        error("ERROR opening socket");
    server = gethostbyname(argv[1]);
    if (server == NULL) {
        fprintf(stderr,"ERROR, no such host\n");
        exit(0);
    }
    bzero((char *) &serv_addr, sizeof(serv_addr));
    serv_addr.sin_family = AF_INET;
    bcopy((char *)server->h_addr, 
         (char *)&serv_addr.sin_addr.s_addr,
         server->h_length);
    serv_addr.sin_port = htons(portno);
    if (connect(sockfd,(struct sockaddr *) &serv_addr,sizeof(serv_addr)) < 0) 
        error("ERROR connecting");
    printf("Please enter the message: ");
    bzero(buffer,256);
    fgets(buffer,255,stdin);
    n = write(sockfd,buffer,strlen(buffer));
    if (n < 0) 
         error("ERROR writing to socket");
    bzero(buffer,256);
    n = read(sockfd,buffer,255);
    if (n < 0) 
         error("ERROR reading from socket");
    printf("%s\n",buffer);
    close(sockfd);
    return 0;
}

now what to do , i want client to uplload file and server shud split it and send to other server and when user retrieves server should combine the parts and send to user