From 954af9179665457b40453a0417ddf5b3949a0449 Mon Sep 17 00:00:00 2001 From: Ian C Date: Sun, 4 Mar 2007 18:35:36 +0000 Subject: This commit was generated by cvs2svn to compensate for changes in r2, which included commits to RCS files with non-trunk default branches. --- serv.c | 105 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 serv.c (limited to 'serv.c') diff --git a/serv.c b/serv.c new file mode 100644 index 0000000..276404c --- /dev/null +++ b/serv.c @@ -0,0 +1,105 @@ +/* A simple server to attach to +*/ +#include + +#include +#include + +#include +#include +#include +#include + +char *name; +int sock_fd; +int connect_fd; + +void Socket(short); + +main(argc,argv) +int argc; +char *argv[]; + +{ + struct sockaddr_in addr; + char buff[1024]; + int len; + int addrlen; + + name=argv[0]; + + if (argc!=2) + { + fprintf(stderr,"%s: usage %s port\n",name,name); + exit(1); + } + + Socket((short)atoi(argv[1])); + + printf("%s: socket bound\n",name); + + while(1) + { + printf("%s: accepting\n",name); + if ((connect_fd=accept(sock_fd,NULL,0))==-1) + { + perror(name); + exit(1); + } + + addrlen=sizeof(addr); + if (getsockname(connect_fd,&addr,&addrlen)!=0) + perror(name); + + printf("%s: connection ON port %d\n",name,ntohs(addr.sin_port)); + + addrlen=sizeof(addr); + if (getpeername(connect_fd,&addr,&addrlen)!=0) + perror(name); + + printf("%s: connection FROM port %d\n",name,ntohs(addr.sin_port)); + + while((len=read(connect_fd,buff,1024))>0) + { + buff[len]=0; + printf("%s: recieved '%s'\n",name,buff); + write(connect_fd,buff,len); + } + + perror(name); + + close(connect_fd); + } + + return(0); +} + + +void Socket(short p) +{ + struct sockaddr_in addr; + + if ((sock_fd=socket(AF_INET,SOCK_STREAM,0))==-1) + { + perror(name); + exit(1); + } + + /* Bind port to address + */ + addr.sin_family=AF_INET; + addr.sin_addr.s_addr=INADDR_ANY; + addr.sin_port=htons(p); + + if (bind(sock_fd,&addr,sizeof(addr))==-1) + { + perror(name); + exit(1); + } + + if (listen(sock_fd,5)==-1) + { + perror(name); + exit(1); + } +} -- cgit v1.2.3