Sending a message from server to client (done and done)
This commit is contained in:
parent
adcef51227
commit
ac75e178ce
|
@ -1,5 +1,8 @@
|
||||||
#include "Connection.h"
|
#include "Connection.h"
|
||||||
|
|
||||||
|
#include <winsock2.h>
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
Connection::Connection()
|
Connection::Connection()
|
||||||
{
|
{
|
||||||
mySocket = NULL;
|
mySocket = NULL;
|
||||||
|
@ -59,13 +62,11 @@ bool Connection::Connect(unsigned short port , const char serverName[])
|
||||||
|
|
||||||
//connection succesfull!
|
//connection succesfull!
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Connection::InitiateServer(unsigned short port)
|
bool Connection::InitiateServer(unsigned short port)
|
||||||
{
|
{
|
||||||
int mySocket = socket(AF_INET, SOCK_STREAM, 0);
|
mySocket = socket(AF_INET, SOCK_STREAM, 0);
|
||||||
if(mySocket == SOCKET_ERROR)
|
if(mySocket == SOCKET_ERROR)
|
||||||
{
|
{
|
||||||
//Error opening socket!
|
//Error opening socket!
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
|
|
||||||
#include "IConnection.h"
|
#include "IConnection.h"
|
||||||
|
|
||||||
class Connection : public IConnection
|
class Connection : public ::Oyster::Network::IConnection
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
int mySocket;
|
int mySocket;
|
||||||
|
@ -23,6 +23,7 @@ class Connection : public IConnection
|
||||||
virtual bool Send(const char message[]);
|
virtual bool Send(const char message[]);
|
||||||
virtual int Recieve(char message[]);
|
virtual int Recieve(char message[]);
|
||||||
virtual int Listen();
|
virtual int Listen();
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
|
@ -5,18 +5,21 @@
|
||||||
#ifndef NETWORK_DEPENDENCIES_I_CONNECTION_H
|
#ifndef NETWORK_DEPENDENCIES_I_CONNECTION_H
|
||||||
#define NETWORK_DEPENDENCIES_I_CONNECTION_H
|
#define NETWORK_DEPENDENCIES_I_CONNECTION_H
|
||||||
|
|
||||||
#include <winsock2.h>
|
namespace Oyster
|
||||||
#include <iostream>
|
|
||||||
|
|
||||||
class IConnection
|
|
||||||
{
|
{
|
||||||
|
namespace Network
|
||||||
|
{
|
||||||
|
class IConnection
|
||||||
|
{
|
||||||
public:
|
public:
|
||||||
virtual bool Connect( unsigned short port, const char serverName[] ) = 0;
|
|
||||||
virtual bool InitiateServer( unsigned short port ) = 0;
|
|
||||||
virtual void Disconnect() = 0;
|
virtual void Disconnect() = 0;
|
||||||
virtual bool Send( const char message[] ) = 0;
|
virtual bool Send( const char message[] ) = 0;
|
||||||
virtual int Recieve(char message[]) = 0;
|
virtual int Recieve(char message[]) = 0;
|
||||||
virtual int Listen() = 0;
|
virtual bool InitiateServer( unsigned short port ) { return false; };
|
||||||
};
|
virtual int Listen() { return -1; };
|
||||||
|
virtual bool Connect( unsigned short port, const char serverName[] ) { return false; };
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
|
@ -0,0 +1,28 @@
|
||||||
|
#include "Client.h"
|
||||||
|
|
||||||
|
Client::Client()
|
||||||
|
{
|
||||||
|
connection = new Connection();
|
||||||
|
}
|
||||||
|
|
||||||
|
Client::~Client()
|
||||||
|
{
|
||||||
|
delete connection;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Client::Connect(unsigned int port, char filename[])
|
||||||
|
{
|
||||||
|
connection->Connect(port, filename);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Client::Send(char msg[])
|
||||||
|
{
|
||||||
|
connection->Send(msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Client::Recv(char msg[])
|
||||||
|
{
|
||||||
|
connection->Recieve(msg);
|
||||||
|
}
|
|
@ -0,0 +1,26 @@
|
||||||
|
#ifndef NETWORK_CLIENT_CLIENT_H
|
||||||
|
#define NETWORK_CLIENT_CLIENT_H
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////
|
||||||
|
// Created by Pontus 2013
|
||||||
|
/////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#include "../NetworkDependencies/Connection.h"
|
||||||
|
|
||||||
|
class Client
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Client();
|
||||||
|
~Client();
|
||||||
|
|
||||||
|
bool Connect(unsigned int port, char filename[]);
|
||||||
|
|
||||||
|
void Send(char msg[]);
|
||||||
|
void Recv(char msg[]);
|
||||||
|
|
||||||
|
private:
|
||||||
|
Connection* connection;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
|
@ -1,10 +1,45 @@
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
#include "Client.h"
|
||||||
|
#include <WinSock2.h>
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
#pragma comment(lib, "ws2_32.lib")
|
||||||
|
|
||||||
|
void ShutdownSockets();
|
||||||
|
bool InitSockets();
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
|
char msgRecv[255] = "\0";
|
||||||
|
|
||||||
|
InitSockets();
|
||||||
|
|
||||||
cout << "Client" << endl;
|
cout << "Client" << endl;
|
||||||
|
|
||||||
|
//Create Client
|
||||||
|
Client client;
|
||||||
|
|
||||||
|
//Connect to server
|
||||||
|
client.Connect(9876, "127.0.0.1");
|
||||||
|
|
||||||
|
//Recieve message
|
||||||
|
client.Recv(msgRecv);
|
||||||
|
|
||||||
|
//print message
|
||||||
|
cout << msgRecv << endl;
|
||||||
|
|
||||||
|
ShutdownSockets();
|
||||||
|
|
||||||
|
system("pause");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool InitSockets()
|
||||||
|
{
|
||||||
|
WSADATA wsaData;
|
||||||
|
return WSAStartup(MAKEWORD(2, 2), &wsaData) == NO_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ShutdownSockets()
|
||||||
|
{
|
||||||
|
WSACleanup();
|
||||||
|
}
|
|
@ -149,8 +149,12 @@
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<ClCompile Include="Client.cpp" />
|
||||||
<ClCompile Include="ClientMain.cpp" />
|
<ClCompile Include="ClientMain.cpp" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClInclude Include="Client.h" />
|
||||||
|
</ItemGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
<ImportGroup Label="ExtensionTargets">
|
<ImportGroup Label="ExtensionTargets">
|
||||||
</ImportGroup>
|
</ImportGroup>
|
||||||
|
|
|
@ -18,5 +18,13 @@
|
||||||
<ClCompile Include="ClientMain.cpp">
|
<ClCompile Include="ClientMain.cpp">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="Client.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClInclude Include="Client.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
|
@ -0,0 +1,16 @@
|
||||||
|
#include "Client.h"
|
||||||
|
|
||||||
|
Client::Client(unsigned int socket)
|
||||||
|
{
|
||||||
|
connection = new Connection(socket);
|
||||||
|
}
|
||||||
|
|
||||||
|
Client::~Client()
|
||||||
|
{
|
||||||
|
delete connection;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Client::Send(char buffer[])
|
||||||
|
{
|
||||||
|
connection->Send(buffer);
|
||||||
|
}
|
|
@ -0,0 +1,24 @@
|
||||||
|
#ifndef NETWORK_SERVER_CLIENT_H
|
||||||
|
#define NETWORK_SERVER_CLIENT_H
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////
|
||||||
|
// Created by Pontus 2013
|
||||||
|
/////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#include "../NetworkDependencies/Connection.h"
|
||||||
|
|
||||||
|
class Client
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Client(unsigned int socket);
|
||||||
|
~Client();
|
||||||
|
|
||||||
|
void Send(char buffer[]);
|
||||||
|
|
||||||
|
|
||||||
|
private:
|
||||||
|
Connection* connection;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
|
@ -0,0 +1,16 @@
|
||||||
|
#ifndef NETWORK_SERVER_ILISTENER_H
|
||||||
|
#define NETWORK_SERVER_ILISTENER_H
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////
|
||||||
|
// Created by Pontus 2013
|
||||||
|
/////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
class IListener
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
virtual bool Init(unsigned int port) = 0;
|
||||||
|
virtual int Accept() = 0;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
|
@ -0,0 +1,32 @@
|
||||||
|
#include "Listener.h"
|
||||||
|
|
||||||
|
Listener::Listener()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
Listener::~Listener()
|
||||||
|
{
|
||||||
|
if(connection)
|
||||||
|
{
|
||||||
|
delete connection;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Listener::Init(unsigned int port)
|
||||||
|
{
|
||||||
|
connection = new Connection();
|
||||||
|
|
||||||
|
connection->InitiateServer(port);
|
||||||
|
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
int Listener::Accept()
|
||||||
|
{
|
||||||
|
int clientSocket = 0;
|
||||||
|
clientSocket = connection->Listen();
|
||||||
|
|
||||||
|
return clientSocket;
|
||||||
|
}
|
|
@ -0,0 +1,25 @@
|
||||||
|
#ifndef NETWORK_SERVER_LISTENER_H
|
||||||
|
#define NETWORK_SERVER_LISTENER_H
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////
|
||||||
|
// Created by Pontus 2013
|
||||||
|
/////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#include "IListener.h"
|
||||||
|
#include "../NetworkDependencies/Connection.h"
|
||||||
|
|
||||||
|
class Listener
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Listener();
|
||||||
|
~Listener();
|
||||||
|
|
||||||
|
bool Init(unsigned int port);
|
||||||
|
int Accept();
|
||||||
|
|
||||||
|
private:
|
||||||
|
Connection* connection;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
|
@ -149,8 +149,15 @@
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<ClCompile Include="Client.cpp" />
|
||||||
|
<ClCompile Include="Listener.cpp" />
|
||||||
<ClCompile Include="ServerMain.cpp" />
|
<ClCompile Include="ServerMain.cpp" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClInclude Include="Client.h" />
|
||||||
|
<ClInclude Include="IListener.h" />
|
||||||
|
<ClInclude Include="Listener.h" />
|
||||||
|
</ItemGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
<ImportGroup Label="ExtensionTargets">
|
<ImportGroup Label="ExtensionTargets">
|
||||||
</ImportGroup>
|
</ImportGroup>
|
||||||
|
|
|
@ -18,5 +18,22 @@
|
||||||
<ClCompile Include="ServerMain.cpp">
|
<ClCompile Include="ServerMain.cpp">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="Client.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="Listener.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClInclude Include="Client.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="Listener.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="IListener.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
|
@ -1,10 +1,49 @@
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
#include <WinSock2.h>
|
||||||
|
#include "Listener.h"
|
||||||
|
#include "Client.h"
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
|
#pragma comment(lib, "ws2_32.lib")
|
||||||
|
|
||||||
|
void ShutdownSockets();
|
||||||
|
bool InitSockets();
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
cout << "Server" << endl;
|
cout << "Server" << endl;
|
||||||
|
|
||||||
|
if(!InitSockets())
|
||||||
|
{
|
||||||
|
cout << "Sockets failed to initialize" << endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Create socket
|
||||||
|
Listener listener;
|
||||||
|
listener.Init(9876);
|
||||||
|
|
||||||
|
//Start listening
|
||||||
|
int clientSocket = listener.Accept();
|
||||||
|
|
||||||
|
//Accept a client
|
||||||
|
Client client(clientSocket);
|
||||||
|
|
||||||
|
//Send a message to that client
|
||||||
|
client.Send("asd");
|
||||||
|
|
||||||
|
ShutdownSockets();
|
||||||
|
|
||||||
|
system("pause");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool InitSockets()
|
||||||
|
{
|
||||||
|
WSADATA wsaData;
|
||||||
|
return WSAStartup(MAKEWORD(2, 2), &wsaData) == NO_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ShutdownSockets()
|
||||||
|
{
|
||||||
|
WSACleanup();
|
||||||
|
}
|
Loading…
Reference in New Issue