How can I run server and client applications in two different computers?

Discussion in 'C++' started by learning_C++, Sep 26, 2004.

  1. learning_C++

    learning_C++ Guest

    Hi,
    I found some example code about server and client applications. But I
    can not run server and client in different computers. Now, I only
    run them in the different windows in Linux. I hope to I can log on a
    computer that run server application from a different computer. How
    can I modify those codes?

    Thanks,

    /*server.c*/
    #include <stdio.h>
    #include <stdlib.h>
    #include <unistd.h>
    #include <errno.h>
    #include <string.h>
    #include <sys/types.h>
    #include <sys/socket.h>
    #include <netinet/in.h>
    #include <arpa/inet.h>
    #include <sys/wait.h>
    #include <signal.h>
    #define MYPORT 3490 // the port users will be connecting to
    #define BACKLOG 10 // how many pending connections queue will hold
    void sigchld_handler(int s) {
    while(wait(NULL) > 0);
    }
    int main(void) {
    int sockfd, new_fd; // listen on sock_fd, new connection on new_fd
    struct sockaddr_in my_addr; // my address information
    struct sockaddr_in their_addr; // connector s address information
    int sin_size;
    struct sigaction sa;
    int yes=1;

    if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1)
    { perror("socket"); exit(1);
    }
    if (setsockopt(sockfd,SOL_SOCKET,SO_REUSEADDR,&yes,sizeof(int)) ==
    -1) {
    perror("setsockopt");
    exit(1);
    }
    my_addr.sin_family = AF_INET; // host byte order
    my_addr.sin_port = htons(MYPORT); // short, network byte order
    my_addr.sin_addr.s_addr = INADDR_ANY; // automatically fill with my
    IP
    memset(&(my_addr.sin_zero), '\0' , 8); // zero the rest of the
    struct

    if (bind(sockfd, (struct sockaddr *)&my_addr, sizeof(struct
    sockaddr)) == -1) {
    perror("bind"); exit(1);
    } if (listen(sockfd, BACKLOG) == -1) {
    perror("listen");
    exit(1);
    }
    sa.sa_handler = sigchld_handler; // reap all dead processes
    sigemptyset(&sa.sa_mask);
    sa.sa_flags = SA_RESTART;
    if (sigaction(SIGCHLD, &sa, NULL) == -1) {
    perror("sigaction");
    exit(1);
    }

    while(1) { // main accept() loop
    sin_size = sizeof(struct sockaddr_in);
    if ((new_fd = accept(sockfd, (struct sockaddr *)&their_addr,
    &sin_size)) == -1) {
    perror("accept");
    continue; }
    printf("server: got connection from %s\n",
    inet_ntoa(their_addr.sin_addr));
    if (!fork()) { // this is the child process
    close(sockfd); // child doesn t need the listener
    if (send(new_fd, "Hello, world!\n", 14, 0) == -1)
    perror("send");
    close(new_fd);
    exit(0);
    }
    close(new_fd); // parent doesn t need this
    }
    return 0;
    }

    /* ** client.c - a stream socket client demo */
    #include <stdio.h>
    #include <stdlib.h>
    #include <unistd.h>
    #include <errno.h>
    #include <string.h>
    #include <netdb.h>
    #include <sys/types.h>
    #include <netinet/in.h>
    #include <sys/socket.h>
    #define PORT 3490 // the port client will be connecting to
    #define MAXDATASIZE 100 // max number of bytes we can get at once
    int main(int argc, char *argv[]) {
    int sockfd, numbytes;
    char buf[MAXDATASIZE];
    struct hostent *he;
    struct sockaddr_in their_addr; // connector s address information
    if (argc != 2) {
    fprintf(stderr,"usage: client hostname\n");
    exit(1);
    }
    if ((he=gethostbyname(argv[1])) == NULL) { // get the host info
    perror("gethostbyname");
    exit(1);
    }

    if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
    perror("socket");
    exit(1);
    }
    their_addr.sin_family = AF_INET; // host byte order
    their_addr.sin_port = htons(PORT); // short, network byte order
    their_addr.sin_addr = *((struct in_addr *)he->h_addr);
    memset(&(their_addr.sin_zero), '\0' , 8); // zero the rest of the
    struct
    if (connect(sockfd, (struct sockaddr *)&their_addr, sizeof(struct
    sockaddr)) == -1) {
    perror("connect");
    exit(1);
    }
    if ((numbytes=recv(sockfd, buf, MAXDATASIZE-1, 0)) == -1) {
    perror("recv");
    exit(1);
    }
    buf[numbytes] = '\0' ;
    printf("Received: %s",buf);
    close(sockfd);
    return 0;
    }
     
    learning_C++, Sep 26, 2004
    #1
    1. Advertising

  2. learning_C++

    Jack Klein Guest

    On 26 Sep 2004 03:26:36 -0700, (learning_C++)
    wrote in comp.lang.c++:

    > Hi,
    > I found some example code about server and client applications. But I
    > can not run server and client in different computers. Now, I only
    > run them in the different windows in Linux. I hope to I can log on a
    > computer that run server application from a different computer. How
    > can I modify those codes?


    [snip]

    You need to ask this in news:comp.os.linux.development.apps.

    --
    Jack Klein
    Home: http://JK-Technology.Com
    FAQs for
    comp.lang.c http://www.eskimo.com/~scs/C-faq/top.html
    comp.lang.c++ http://www.parashift.com/c -faq-lite/
    alt.comp.lang.learn.c-c++
    http://www.contrib.andrew.cmu.edu/~ajo/docs/FAQ-acllc.html
     
    Jack Klein, Sep 26, 2004
    #2
    1. Advertising

  3. learning_C++

    Rich Grise Guest

    On Sunday 26 September 2004 10:34 am, Jack Klein did deign to grace us with
    the following:

    > On 26 Sep 2004 03:26:36 -0700, (learning_C++)
    > wrote in comp.lang.c++:
    >
    >> Hi,
    >> I found some example code about server and client applications. But I
    >> can not run server and client in different computers. Now, I only
    >> run them in the different windows in Linux. I hope to I can log on a
    >> computer that run server application from a different computer. How
    >> can I modify those codes?

    >
    > [snip]
    >
    > You need to ask this in news:comp.os.linux.development.apps.
    >

    There might also be something in news:comp.windows.x.*

    Good Luck!
    Rich
     
    Rich Grise, Sep 26, 2004
    #3
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Vanga Sasidhar

    How can I run asp.net in other computers....

    Vanga Sasidhar, Apr 2, 2004, in forum: ASP .Net
    Replies:
    6
    Views:
    510
    Vanga Sasidhar
    Apr 3, 2004
  2. Smeagol
    Replies:
    1
    Views:
    289
    Jonathan Gardner
    Aug 19, 2009
  3. Randy Hudson

    My web pages always look different on other peoples computers.

    Randy Hudson, Dec 28, 2003, in forum: ASP .Net Web Controls
    Replies:
    3
    Views:
    155
    Alvin Bruney
    Dec 28, 2003
  4. Guest
    Replies:
    2
    Views:
    185
    Foo Man Chew
    Dec 29, 2003
  5. Ryan
    Replies:
    2
    Views:
    129
Loading...

Share This Page