diff --git a/Code/Network/NetworkDependencies/Connection.cpp b/Code/Network/NetworkDependencies/Connection.cpp index 6d567aca..4cb9c8c1 100644 --- a/Code/Network/NetworkDependencies/Connection.cpp +++ b/Code/Network/NetworkDependencies/Connection.cpp @@ -3,51 +3,31 @@ #include #include -using namespace Oyster::Network; +using namespace Oyster::Network; Connection::~Connection() { - if(mySocket != NULL) - { - closesocket( mySocket ); - mySocket = NULL; - } + closesocket( this->socket ); } bool Connection::Connect(unsigned short port , const char serverName[]) { - mySocket = socket(AF_INET, SOCK_STREAM, 0); - if(mySocket == SOCKET_ERROR) - { - //error opening socket - return false; - } - - struct hostent *hostEnt; if((hostEnt = gethostbyname(serverName)) == NULL) { //couldn't find host return false; } + struct sockaddr_in server; server.sin_family = AF_INET; server.sin_port = htons(port); server.sin_addr.s_addr = *(unsigned long*) hostEnt->h_addr; - while(1) + if(connect(this->socket, (sockaddr*)&server, sizeof(server)) == SOCKET_ERROR) { - if(connect(mySocket, (sockaddr*)&server, sizeof(server)) == SOCKET_ERROR) - { - //Error connecting to server - return false; - } - - else - { - break; - } - Sleep(10); + //Error connecting to server + return false; } //connection succesfull! @@ -56,8 +36,7 @@ bool Connection::Connect(unsigned short port , const char serverName[]) bool Connection::InitiateServer(unsigned short port) { - mySocket = socket(AF_INET, SOCK_STREAM, 0); - if(mySocket == SOCKET_ERROR) + if(!initiateSocket()) { //Error opening socket! return false; @@ -68,28 +47,38 @@ bool Connection::InitiateServer(unsigned short port) server.sin_port = htons(port); server.sin_addr.s_addr = INADDR_ANY; - if(bind(mySocket, (sockaddr*)&server, sizeof(server)) == SOCKET_ERROR) + if(bind(this->socket, (sockaddr*)&server, sizeof(server)) == SOCKET_ERROR) { //Bind failed!; - closesocket(mySocket); + closesocket(this->socket); return false; } //not our Listen function! its trying to keep our socket open for connections - if(listen(mySocket, 5) == SOCKET_ERROR) + if(listen(this->socket, 5) == SOCKET_ERROR) { //"Listen failed! - closesocket(mySocket); - return -1; + closesocket(this->socket); + return false; } //Server started! - return mySocket; + return true; +} + +bool Connection::InitiateClient() +{ + if(!initiateSocket()) + { + return false; + } + + return true; } void Connection::Disconnect() { - closesocket(mySocket); + closesocket(this->socket); } bool Connection::Send(const unsigned char message[]) @@ -98,10 +87,10 @@ bool Connection::Send(const unsigned char message[]) unsigned long messageSize = strlen((char*)message); int optlen = sizeof(int); int optval = 0; - getsockopt(mySocket, SOL_SOCKET, SO_MAX_MSG_SIZE, (char *)&optval, &optlen); + getsockopt(this->socket, SOL_SOCKET, SO_MAX_MSG_SIZE, (char *)&optval, &optlen); - messageSize = 1000; - nBytes = send(mySocket, (char*)message , messageSize, 0); + messageSize = 255; + nBytes = send(this->socket, (char*)message , messageSize, 0); if(nBytes == SOCKET_ERROR) { //Send failed! @@ -114,7 +103,8 @@ bool Connection::Send(const unsigned char message[]) int Connection::Recieve(unsigned char message[]) { int nBytes; - nBytes = recv(mySocket, (char*)message , 10000, 0); + + nBytes = recv(this->socket, (char*)message , 255, 0); if(nBytes == SOCKET_ERROR) { //Recv failed @@ -129,7 +119,7 @@ int Connection::Recieve(unsigned char message[]) int Connection::Listen() { int clientSocket; - if((clientSocket = accept(mySocket, NULL, NULL)) == INVALID_SOCKET) + if((clientSocket = accept(this->socket, NULL, NULL)) == INVALID_SOCKET) { //failed return -1; @@ -137,3 +127,18 @@ int Connection::Listen() return clientSocket; } + +/////////////////////////////////////// +//Private functions +/////////////////////////////////////// +bool Connection::initiateSocket() +{ + this->socket = ::socket(AF_INET, SOCK_STREAM, 0); + if(this->socket == SOCKET_ERROR) + { + //error opening socket + return false; + } + + return true; +} diff --git a/Code/Network/NetworkDependencies/Connection.h b/Code/Network/NetworkDependencies/Connection.h index 109d761c..a0019a26 100644 --- a/Code/Network/NetworkDependencies/Connection.h +++ b/Code/Network/NetworkDependencies/Connection.h @@ -1,10 +1,10 @@ +#ifndef NETWORK_DEPENDENCIES_CONNECTION_H +#define NETWORK_DEPENDENCIES_CONNECTION_H + ////////////////////////////////// // Created by Sam Svensson 2013 // ////////////////////////////////// -#ifndef NETWORK_DEPENDENCIES_CONNECTION_H -#define NETWORK_DEPENDENCIES_CONNECTION_H - #include "IConnection.h" namespace Oyster @@ -15,22 +15,24 @@ namespace Oyster { public: - Connection() { mySocket = 0; }; - Connection(int socket) { mySocket = socket; }; - ~Connection(); + Connection() { this->socket = 0; }; + Connection(int socket) { this->socket = socket; }; + virtual ~Connection(); - virtual bool Connect( unsigned short port , const char serverName[] ); virtual bool InitiateServer( unsigned short port ); - - virtual void Disconnect(); + virtual bool InitiateClient(); virtual bool Send(const unsigned char message[]); virtual int Recieve(unsigned char message[]); + virtual void Disconnect(); + virtual bool Connect( unsigned short port , const char serverName[] ); virtual int Listen(); private: - int mySocket; + bool initiateSocket(); + + int socket; }; } diff --git a/Code/Network/NetworkDependencies/IConnection.h b/Code/Network/NetworkDependencies/IConnection.h index 91b7c7b4..51b7631d 100644 --- a/Code/Network/NetworkDependencies/IConnection.h +++ b/Code/Network/NetworkDependencies/IConnection.h @@ -1,10 +1,10 @@ +#ifndef NETWORK_DEPENDENCIES_I_CONNECTION_H +#define NETWORK_DEPENDENCIES_I_CONNECTION_H + ////////////////////////////////// // Created by Sam Svensson 2013 // ////////////////////////////////// -#ifndef NETWORK_DEPENDENCIES_I_CONNECTION_H -#define NETWORK_DEPENDENCIES_I_CONNECTION_H - namespace Oyster { namespace Network @@ -17,6 +17,7 @@ namespace Oyster virtual bool Send( const unsigned char message[] ) = 0; virtual int Recieve(unsigned char message[]) = 0; virtual bool InitiateServer( unsigned short port ) { return false; }; + virtual bool InitiateClient() { return false; }; virtual int Listen() { return -1; }; virtual bool Connect( unsigned short port, const char serverName[] ) { return false; }; }; diff --git a/Code/Network/NetworkDependencies/ITranslate.h b/Code/Network/NetworkDependencies/ITranslate.h index 30360dcc..e14ad3f1 100644 --- a/Code/Network/NetworkDependencies/ITranslate.h +++ b/Code/Network/NetworkDependencies/ITranslate.h @@ -1,6 +1,10 @@ #ifndef NETWORK_DEPENDENCIES_I_TRANSLATE #define NETWORK_DEPENDENCIES_I_TRANSLATE +////////////////////////////////// +// Created by Sam Svensson 2013 // +////////////////////////////////// + namespace Oyster { namespace Network diff --git a/Code/Network/NetworkDependencies/Protocols.h b/Code/Network/NetworkDependencies/Protocols.h index d11cd682..95f68942 100644 --- a/Code/Network/NetworkDependencies/Protocols.h +++ b/Code/Network/NetworkDependencies/Protocols.h @@ -1,6 +1,10 @@ #ifndef NETWORK_DEPENDENCIES_PROTOCOLS_H #define NETWORK_DEPENDENCIES_PROTOCOLS_H +////////////////////////////////// +// Created by Sam Svensson 2013 // +////////////////////////////////// + #include namespace Oyster diff --git a/Code/Network/NetworkDependencies/Translator.h b/Code/Network/NetworkDependencies/Translator.h index ef74bc34..514d325c 100644 --- a/Code/Network/NetworkDependencies/Translator.h +++ b/Code/Network/NetworkDependencies/Translator.h @@ -1,6 +1,10 @@ #ifndef NETWORK_DEPENDENCIES_TRANSLATOR_H #define NETWORK_DEPENDENCIES_TRANSLATOR_H +////////////////////////////////// +// Created by Sam Svensson 2013 // +////////////////////////////////// + #include "Messages/MessagesInclude.h" #include "Protocols.h" #include "ITranslate.h" diff --git a/Code/Network/OysterNetworkClient/Client.cpp b/Code/Network/OysterNetworkClient/Client.cpp index d77b1bf7..abe36d71 100644 --- a/Code/Network/OysterNetworkClient/Client.cpp +++ b/Code/Network/OysterNetworkClient/Client.cpp @@ -15,6 +15,7 @@ Client::~Client() bool Client::Connect(unsigned int port, char filename[]) { + connection->InitiateClient(); connection->Connect(port, filename); return true;