From b6b88188b31cb27846fdb01527ef8c4b7a3b2ccf Mon Sep 17 00:00:00 2001 From: Brandon Jackson <1drummer@att.net> Date: Tue, 20 Oct 2015 14:33:11 -0500 Subject: [PATCH] Updated master with my branch's file --- Server.cpp | 160 +++++++++++++++++++++++++++++++++++++++++++++++++++++ server.C | 83 --------------------------- 2 files changed, 160 insertions(+), 83 deletions(-) create mode 100644 Server.cpp delete mode 100644 server.C diff --git a/Server.cpp b/Server.cpp new file mode 100644 index 0000000..3630ebc --- /dev/null +++ b/Server.cpp @@ -0,0 +1,160 @@ +/* A simple server in the internet domain using TCP + The port number is passed as an argument */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "Board.h" +using namespace std; + +void error(const char *msg) +{ + perror(msg); + exit(1); +} + +int main(int argc, char *argv[]) +{ + int sockfd, newsockfd, portno; + socklen_t clilen; + + struct sockaddr_in serv_addr, cli_addr; + + int n; + + if (argc < 2) { + fprintf(stderr,"ERROR, no port provided\n"); + exit(1); + } + + sockfd = socket(AF_INET, SOCK_STREAM, 0); + + if (sockfd < 0) + error("ERROR opening socket"); + + bzero((char *) &serv_addr, sizeof(serv_addr)); + + portno = atoi(argv[1]); + + serv_addr.sin_family = AF_INET; + + serv_addr.sin_addr.s_addr = INADDR_ANY; + + serv_addr.sin_port = htons(portno); + + if (bind(sockfd, (struct sockaddr *) &serv_addr, + sizeof(serv_addr)) < 0) + error("ERROR on binding"); + + listen(sockfd,5); + + clilen = sizeof(cli_addr); + + newsockfd = accept(sockfd, + (struct sockaddr *) &cli_addr, + &clilen); + + if (newsockfd < 0) + error("ERROR on accept"); + + //After all the server setup crap is done, we start the board + + // cout<<"WELCOME\n"; + + // cout<<"1. Play against AI?\n"; + // cout<<"2. Play against a human?\n"; + // cout<<"Enter choice: \n"; + + + // cin >> choice; + // cout << "OK" << endl; + + Board b; + string move; + + //Brute force up in here! + bool gameOver = false; + vector record; + b.snapshot(record,b); + char buffer[256]; + char info[256]; + int choice; + + //Waiting for client to select game type + n = read(newsockfd,info,255); + istringstream convert(info); + convert >> choice; //Sets choice equal to 1 or 2, based on clients input + bzero(info,256); //Resets info back to normal, "choice" now contains client's value + + while(true) { + + while(gameOver != true) + { + gameOver = b.isGameOver(); + + while(b.getTurn() == 'O' ) + { + b.displayBoard(); //Display the board on the server + string boardState = b.boardToString(); + write(newsockfd, boardState.c_str(), boardState.length()); //Display the board to the client (line by line) + cout<<"\nWaiting for client: "; + n = read(newsockfd,buffer,255); + move = buffer; + b.interpret(move,b); + + gameOver = b.isGameOver(); + if(gameOver == true) { + string endGame = "Game_Over"; + write(newsockfd, endGame.c_str(), endGame.length()); //Display the board to the client (line by line) + break; + } + else { + string continueGame = "Continue_Game"; + write(newsockfd, continueGame.c_str(), continueGame.length()); //Display the board to the client (line by line) + } + } + + //gameOver = b.isGameOver(); + // if(gameOver == true) { + // string endGame = "Game_Over"; + // write(newsockfd, endGame.c_str(), endGame.length()); //Display the board to the client (line by line) + // break; + // } + // else { + // string continueGame = "Continue_Game"; + // write(newsockfd, continueGame.c_str(), continueGame.length()); //Display the board to the client (line by line) + // } + + vector possibleMoves = b.viewPossibleMoves(); + if(choice == 1) + b.easyAI(); + } + + close(newsockfd); + close(sockfd); + break; + + /* + bzero(buffer,512); + n = read(newsockfd,buffer,255); + if (n < 0) error("ERROR reading from socket"); + printf("Here is the message: %s\n",buffer); + n = write(newsockfd,"I got your message",18); + + if (n < 0) error("ERROR writing to socket"); + + if(buffer == "y") { + close(newsockfd); + close(sockfd); + break; + } + */ + } + return 0; +} diff --git a/server.C b/server.C deleted file mode 100644 index 0c61a0e..0000000 --- a/server.C +++ /dev/null @@ -1,83 +0,0 @@ -/* A simple server in the internet domain using TCP - The port number is passed as an argument */ -#include -#include -#include -#include -#include -#include -#include - -void error(const char *msg) -{ - perror(msg); - exit(1); -} - -int main(int argc, char *argv[]) -{ - int sockfd, newsockfd, portno; - socklen_t clilen; - char buffer[256]; - - - struct sockaddr_in serv_addr, cli_addr; - - int n; - - - if (argc < 2) { - fprintf(stderr,"ERROR, no port provided\n"); - exit(1); - } - - sockfd = socket(AF_INET, SOCK_STREAM, 0); - - if (sockfd < 0) - error("ERROR opening socket"); - - bzero((char *) &serv_addr, sizeof(serv_addr)); - - portno = atoi(argv[1]); - - serv_addr.sin_family = AF_INET; - - serv_addr.sin_addr.s_addr = INADDR_ANY; - - serv_addr.sin_port = htons(portno); - - if (bind(sockfd, (struct sockaddr *) &serv_addr, - sizeof(serv_addr)) < 0) - error("ERROR on binding"); - - listen(sockfd,5); - - clilen = sizeof(cli_addr); - - newsockfd = accept(sockfd, - (struct sockaddr *) &cli_addr, - &clilen); - - if (newsockfd < 0) - error("ERROR on accept"); - - bzero(buffer,256); - - n = read(newsockfd,buffer,255); - - - if (n < 0) error("ERROR reading from socket"); - - - printf("Here is the message: %s\n",buffer); - - n = write(newsockfd,"I got your message",18); - - if (n < 0) error("ERROR writing to socket"); - - close(newsockfd); - - close(sockfd); - - return 0; -}