Skip to content
Snippets Groups Projects
Select Git revision
  • 72365ebc85e798cd02dcd6ccf280aa1360ccc34e
  • master default protected
2 results

ShadowLife.java

Blame
  • Forked from Eleanor McMurtry / emcmurtry-project-1
    Source project has a limited visibility.
    server.c 2.08 KiB
    /* 
     * Server program based on sample code
     */
    
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <sys/types.h> 
    #include <sys/socket.h>
    #include <netinet/in.h>
    #include <unistd.h>
    
    #include "get.h"
    
    int main(int argc, char *argv[])
    {
    	int sockfd, newsockfd, portno;
    	char buffer[256];
    	struct sockaddr_in serv_addr, cli_addr;
    	socklen_t clilen;
    	int n;
    
    	if (argc < 2) {
    		fprintf(stderr,"ERROR, no port provided\n");
    		exit(1);
    	}
    
    	 /* Create TCP socket */
    	sockfd = socket(AF_INET, SOCK_STREAM, 0);
    	if (sockfd < 0) {
    		perror("ERROR opening socket");
    		exit(1);
    	}
    
    	
    	bzero((char *) &serv_addr, sizeof(serv_addr));
    
    	portno = atoi(argv[1]);
    	
    	/* Create address we're going to listen on (given port number)
    	 - converted to network byte order & any IP address for 
    	 this machine */
    	serv_addr.sin_family = AF_INET;
    	serv_addr.sin_addr.s_addr = INADDR_ANY;
    	serv_addr.sin_port = htons(portno);  // store in machine-neutral format
    
    	 /* Bind address to the socket */
    	if (bind(sockfd, (struct sockaddr*)&serv_addr, sizeof(serv_addr)) < 0) {
    		perror("ERROR on binding");
    		exit(1);
    	}
    	
    	/* Listen on socket - means we're ready to accept connections - 
    	 incoming connection requests will be queued */
    	listen(sockfd,5);
    	clilen = sizeof(cli_addr);
    
    	/* Accept a connection - block until a connection is ready to
    	 be accepted. Get back a new file descriptor to communicate on. */
    	newsockfd = accept(	sockfd, (struct sockaddr *) &cli_addr, 
    						&clilen);
    
    	if (newsockfd < 0) {
    		perror("ERROR on accept");
    		exit(1);
    	}
    	
    	bzero(buffer,256);
    	/* Read characters from the connection,
    		then process */
    	n = read(newsockfd,buffer,255);
    
    	if (n < 0) {
    		perror("ERROR reading from socket");
    		exit(1);
    	}
    	
        /* using the get.c functionality here: */
    	char* root = argv[2];
        parse(buffer, root);
    
    	printf("Here is the message: %s\n",buffer);
    
    	n = write(newsockfd,"I got your message",18);
    	
    	if (n < 0) {
    		perror("ERROR writing to socket");
    		exit(1);
    	}
    	
    	/* close socket */
    	close(sockfd);
    	
    	return 0; 
    }