CodeGuru Home VC++ / MFC / C++ .NET / C# Visual Basic VB Forums Developer.com
Results 1 to 8 of 8
  1. #1
    Join Date
    Jul 2007
    Posts
    3

    Question c-program on .html file transfering from client to server

    Hello friends,
    I have a problem on transfering a .html file from client to server.
    Earlier I have done two program, one for client and another for server only for message passing in Linux(RED HAT ENTERPRISE LINUX V4).

    client program is:

    ---------------------------------------------------------------------------------------

    #include <stdio.h>

    #include <sys/types.h>

    #include <sys/socket.h>

    #include <netinet/in.h>

    #include <netdb.h>


    void error(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);

    return 0;

    }
    -----------------------------------------------------------------------------------

    server program is:

    /* A simple server in the internet domain using TCP
    The port number is passed as an argument
    This version runs forever, forking off a separate
    process for each connection
    */
    #include <stdio.h>
    #include <sys/types.h>
    #include <sys/socket.h>
    #include <netinet/in.h>

    void dostuff(int); /* function prototype */
    void error(char *msg)
    {
    perror(msg);
    exit(1);
    }

    int main(int argc, char *argv[])
    {
    int sockfd, newsockfd, portno, clilen, pid;
    struct sockaddr_in serv_addr, cli_addr;

    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);
    while (1) {
    newsockfd = accept(sockfd,
    (struct sockaddr *) &cli_addr, &clilen);
    if (newsockfd < 0)
    error("ERROR on accept");
    pid = fork();
    if (pid < 0)
    error("ERROR on fork");
    if (pid == 0) {
    close(sockfd);
    dostuff(newsockfd);
    exit(0);
    }
    else close(newsockfd);
    } /* end of while */
    return 0; /* we never get here */
    }

    /******** DOSTUFF() *********************
    There is a separate instance of this function
    for each connection. It handles all communication
    once a connnection has been established.
    *****************************************/
    void dostuff (int sock)
    {
    int n;
    char buffer[256];

    bzero(buffer,256);
    n = read(sock,buffer,255);
    if (n < 0) error("ERROR reading from socket");
    printf("Here is the message: %s\n",buffer);
    n = write(sock,"I got your message",18);
    if (n < 0) error("ERROR writing to socket");
    }
    ---------------------------------------------------------------------------------

    Now I want to do two programs,for transferring of .html file from client to server and found difficult because I wrote all the codes for linux and those header files are not supported by VC++ compiler.
    Can anyone help me out from this problem?If someone give the apropriate code for those two programs then it will be better.
    I will always grateful to him/her.

  2. #2
    Join Date
    Nov 2002
    Location
    California
    Posts
    4,556

    Re: c-program on .html file transfering from client to server

    In Windows, there is no concept of "forking off a separate process for each connection", which is the architecture you have chosen for the server.

    You will need to re-think this architecture. Threading is a possibility.

    Mike

  3. #3
    Join Date
    Jul 2007
    Posts
    3

    Question Re: c-program on .html file transfering from client to server

    I am new in networking.
    Could you explain all the problems if you don't mind?
    I have to do this project.
    I just want to do in server-client model;there is an .html file in client and server can access that file using C language in windows. I mean both server and client run their individual c-programs and the file is displayed in server screen.Please help..........................!!!!!!!!

  4. #4
    Join Date
    Nov 2002
    Location
    California
    Posts
    4,556

    Re: c-program on .html file transfering from client to server

    Search the FAQs for "where can I find samples of network programs", or something similar.

  5. #5
    Join Date
    Mar 2004
    Location
    (Upper-) Austria
    Posts
    2,899

    Re: c-program on .html file transfering from client to server

    Try Cygwin. Cygwin is a Linux-alike environment for Windows. It provides a Linux compatible layer to Windows API calls. Your application should compile on this platform.
    I am not offering technical guidiance via email or IM
    Come on share your photo with us! CG members photo album!
    Use the Code Tags!

  6. #6
    Join Date
    Nov 2002
    Location
    California
    Posts
    4,556

    Re: c-program on .html file transfering from client to server

    Try Cygwin....
    Yes, but then his users would also need to download and install Cygwin, which is not a straighforward task for typical users.

  7. #7
    Join Date
    Jul 2007
    Posts
    3

    Question Re: c-program on .html file transfering from client to server

    Is there any simple way to solve this problem.I mean Using C language without installing any other s/w.

  8. #8
    Join Date
    Nov 2002
    Location
    California
    Posts
    4,556

    Re: c-program on .html file transfering from client to server

    The problem is that the threading model is not part of the C (or C++) language; it's part of the operating system. Thus, each operating system does it differently, and it's difficult to write cross-platform code when threading is involved.

    There have been some attempts at cross-platform threading code, like POSIX. You might try that.

    Which is all an involved way of saying that there's probably not an easy way around this. Either use your existing code by installing a Cygwin emulator, or re-write the code for Windows.

    Mike

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  





Click Here to Expand Forum to Full Width

Featured