C++Talk.NET Forum Index C++Talk.NET
C++ language newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

How can I run server and client applications in two differen

 
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ language (comp.lang.c++)
View previous topic :: View next topic  
Author Message
learning_C++
Guest





PostPosted: Sun Sep 26, 2004 10:26 am    Post subject: How can I run server and client applications in two differen Reply with quote



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), '' , Cool; // 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 %sn",
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 hostnamen");
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), '' , Cool; // 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] = '' ;
printf("Received: %s",buf);
close(sockfd);
return 0;
}
Back to top
Jack Klein
Guest





PostPosted: Sun Sep 26, 2004 5:34 pm    Post subject: Re: How can I run server and client applications in two diff Reply with quote



On 26 Sep 2004 03:26:36 -0700, [email]learning_c (AT) hotmail (DOT) com[/email] (learning_C++)
wrote in comp.lang.c++:

Quote:
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

Back to top
Rich Grise
Guest





PostPosted: Sun Sep 26, 2004 7:44 pm    Post subject: Re: How can I run server and client applications in two diff Reply with quote



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

Quote:
On 26 Sep 2004 03:26:36 -0700, [email]learning_c (AT) hotmail (DOT) com[/email] (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


Back to top
Display posts from previous:   
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ language (comp.lang.c++) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.