user:abrunda1:video_wall_server_program_source
Video Wall Server Program Source
cli-srv.c
#include "includes.h" #include "defines.h" void talk_to_srv(int fd) { char tmp[2048]; send(fd,tmp,sizeof(tmp),0); if(send(fd,tmp,sizeof(tmp),0) == -1) { printf("[CLIENT-SIDE]: (send) tmp Data could not be sent at this time.\n"); exit(-1); } }
connectcli.c
#include "includes.h" #include "defines.h" int connect_to_srv(char *host, int portnum) { int sock; struct sockaddr_in servadd; // the address to connect to //struct hostent *hp; // used to get address /* Search for a valid socket to connect to */ sock = socket(AF_INET, SOCK_STREAM, 0); // search for a valid socket if(sock == -1) // if no valid sockets found { printf("[CLIENT-SIDE]: (socket) Failed to find a valid socket.\n"); return -1; // then exit with error } /* Connect to server */ bzero(&servadd, sizeof(servadd)); // zero out the address hp = gethostbyname(host); // lookup server hostname/ip if(hp == NULL) // if no valid hostname or ip { printf("[CLIENT-SIDE] (?) Could not find valid server host.\n"); return -1; // then exit with an error } bcopy(hp->h_addr,(struct sockaddr *)&servadd.sin_addr,hp->h_length); servadd.sin_port = htons(portnum); // fill in socket port number servadd.sin_family = AF_INET; // fill in socket family type if(connect(sock,(struct sockaddr *)&servadd, sizeof(servadd)) != 0) { printf("[CLIENT-SIDE] (connect) Could not connect to server or server refused connection.\n"); return -1; // if cannot connect then exit with error } return sock; }
defines.h
#define HOSTLEN 256 #define BACKLOG 1 #define ONLINE 1 int portnum; struct sockaddr_in saddr; struct hostent *hp; char hostname[HOSTLEN]; int sock_id;
includes.h
#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <netdb.h> #include <time.h> #include <strings.h>
processreq.c
#include "includes.h" #include "defines.h" void processreq(int fd, int delay) { char tmp[2048]; recv(fd,tmp,sizeof(tmp),0); printf("%s\n",tmp); }
socket.c
/* * * socket.c - socket creation c code * */ #include "includes.h" #include "defines.h" int msock(int portnum) { return create_sock(portnum,BACKLOG); } int create_sock(int portnum, int backlog) { sock_id = socket(PF_INET, SOCK_STREAM, 0); if(sock_id == -1) { printf("[ERROR]: socket: creation failed.\n"); return -1; } bzero((void *)&saddr, sizeof(saddr)); gethostname(hostname, HOSTLEN); hp = gethostbyname(hostname); bcopy((void *)hp->h_addr,(void *)&saddr.sin_addr,hp->h_length); saddr.sin_port = htons(portnum); saddr.sin_family = AF_INET; if(bind(sock_id, (struct sockaddr *)&saddr,sizeof(saddr)) != 0) { printf("[ERROR]: bind: socket bind failed!\n"); return -1; } if(listen(sock_id,backlog) != 0) { printf("[ERROR]: listen: unable to listen to socket!\n"); return -1; } return sock_id; }
WOS.c
#include "includes.h" #include "defines.h" //#include "socket.c" //#include "processreq.c" int main(int argc, char *argv[]) { int sock, fd, delay; if(argc <= 2) { printf("%s: is missing argument for port number and/or time delay.\n",argv[0]); exit(-1); } portnum = atoi(argv[1]); sock = msock(portnum); delay = atoi(argv[2]); if(sock == -1) { printf("[ERROR]: socket: socket creation failed.\n"); exit(-1); } while(1){ fd = accept(sock,NULL,NULL); if(fd == -1) { printf("[ERROR]: accept: could not accept connection to socket at this time.\n"); break; } processreq(fd, delay); close(fd); //return 0; } }
Makefile
all: WOS WOS: WOS.o socket.o processreq.o connectcli.o cli-srv.o gcc WOS.o socket.o processreq.o connectcli.o cli-srv.o -o WOS WOS.o: WOS.c gcc -c WOS.c socket.o: socket.c gcc -c socket.c processreq.o: processreq.c gcc -c processreq.c connectcli.o: connectcli.c gcc -c connectcli.c cli-srv.o: cli-srv.c gcc -c cli-srv.c
user/abrunda1/video_wall_server_program_source.txt · Last modified: 2010/02/18 13:59 by abrunda1