Network -
This commit is contained in:
parent
94ccd91828
commit
7acb3a3613
|
@ -51,13 +51,13 @@ struct Translator::PrivateData
|
||||||
}
|
}
|
||||||
|
|
||||||
//Packages a header with a size(int) and a string of characters(char)
|
//Packages a header with a size(int) and a string of characters(char)
|
||||||
void PackHeader(SmartPointer<OysterByte> &bytes, CustomNetProtocol& protocol)
|
void PackHeader(OysterByte &bytes, CustomNetProtocol& protocol)
|
||||||
{
|
{
|
||||||
auto it = ((MyCastingStruct*)protocol.privateData)->attributes.begin();
|
auto it = ((MyCastingStruct*)protocol.privateData)->attributes.begin();
|
||||||
auto end = ((MyCastingStruct*)protocol.privateData)->attributes.end();
|
auto end = ((MyCastingStruct*)protocol.privateData)->attributes.end();
|
||||||
|
|
||||||
size = 4; //size(int)
|
size = 4; //size(int)
|
||||||
message.PackInt(size, *bytes);
|
message.PackInt(size, bytes);
|
||||||
|
|
||||||
//Find all the data types
|
//Find all the data types
|
||||||
for(; it != end; it++)
|
for(; it != end; it++)
|
||||||
|
@ -65,19 +65,19 @@ struct Translator::PrivateData
|
||||||
headerString.push_back(it->second.type);
|
headerString.push_back(it->second.type);
|
||||||
}
|
}
|
||||||
|
|
||||||
message.PackShort(size, *bytes);
|
message.PackShort(size, bytes);
|
||||||
size += 2;
|
size += 2;
|
||||||
|
|
||||||
for(int i = 0; i < (int)headerString.size(); i++)
|
for(int i = 0; i < (int)headerString.size(); i++)
|
||||||
{
|
{
|
||||||
message.PackChar(headerString.at(i), *bytes);
|
message.PackChar(headerString.at(i), bytes);
|
||||||
size++;
|
size++;
|
||||||
}
|
}
|
||||||
|
|
||||||
message.SetSize(bytes);
|
message.SetSize(bytes);
|
||||||
}
|
}
|
||||||
|
|
||||||
void PackMessage(SmartPointer<OysterByte> &bytes, CustomNetProtocol& protocol)
|
void PackMessage(OysterByte &bytes, CustomNetProtocol& protocol)
|
||||||
{
|
{
|
||||||
auto it = ((MyCastingStruct*)protocol.privateData)->attributes.begin();
|
auto it = ((MyCastingStruct*)protocol.privateData)->attributes.begin();
|
||||||
auto end = ((MyCastingStruct*)protocol.privateData)->attributes.end();
|
auto end = ((MyCastingStruct*)protocol.privateData)->attributes.end();
|
||||||
|
@ -87,40 +87,40 @@ struct Translator::PrivateData
|
||||||
switch((int)headerString.at(i))
|
switch((int)headerString.at(i))
|
||||||
{
|
{
|
||||||
case NetAttributeType_Bool:
|
case NetAttributeType_Bool:
|
||||||
message.PackBool(it->second.value.netBool, *bytes);
|
message.PackBool(it->second.value.netBool, bytes);
|
||||||
break;
|
break;
|
||||||
case NetAttributeType_Char:
|
case NetAttributeType_Char:
|
||||||
message.PackChar(it->second.value.netChar, *bytes);
|
message.PackChar(it->second.value.netChar, bytes);
|
||||||
break;
|
break;
|
||||||
case NetAttributeType_UnsignedChar:
|
case NetAttributeType_UnsignedChar:
|
||||||
message.PackUnsignedChar(it->second.value.netUChar, *bytes);
|
message.PackUnsignedChar(it->second.value.netUChar, bytes);
|
||||||
break;
|
break;
|
||||||
case NetAttributeType_Short:
|
case NetAttributeType_Short:
|
||||||
message.PackShort(it->second.value.netShort, *bytes);
|
message.PackShort(it->second.value.netShort, bytes);
|
||||||
break;
|
break;
|
||||||
case NetAttributeType_UnsignedShort:
|
case NetAttributeType_UnsignedShort:
|
||||||
message.PackUnsignedShort(it->second.value.netUShort, *bytes);
|
message.PackUnsignedShort(it->second.value.netUShort, bytes);
|
||||||
break;
|
break;
|
||||||
case NetAttributeType_Int:
|
case NetAttributeType_Int:
|
||||||
message.PackInt(it->second.value.netInt, *bytes);
|
message.PackInt(it->second.value.netInt, bytes);
|
||||||
break;
|
break;
|
||||||
case NetAttributeType_UnsignedInt:
|
case NetAttributeType_UnsignedInt:
|
||||||
message.PackUnsignedInt(it->second.value.netUInt, *bytes);
|
message.PackUnsignedInt(it->second.value.netUInt, bytes);
|
||||||
break;
|
break;
|
||||||
case NetAttributeType_Int64:
|
case NetAttributeType_Int64:
|
||||||
message.PackInt64(it->second.value.netInt64, *bytes);
|
message.PackInt64(it->second.value.netInt64, bytes);
|
||||||
break;
|
break;
|
||||||
case NetAttributeType_UnsignedInt64:
|
case NetAttributeType_UnsignedInt64:
|
||||||
message.PackUnsignedInt64(it->second.value.netUInt64, *bytes);
|
message.PackUnsignedInt64(it->second.value.netUInt64, bytes);
|
||||||
break;
|
break;
|
||||||
case NetAttributeType_Float:
|
case NetAttributeType_Float:
|
||||||
message.PackFloat(it->second.value.netFloat, *bytes);
|
message.PackFloat(it->second.value.netFloat, bytes);
|
||||||
break;
|
break;
|
||||||
case NetAttributeType_Double:
|
case NetAttributeType_Double:
|
||||||
message.PackDouble(it->second.value.netDouble, *bytes);
|
message.PackDouble(it->second.value.netDouble, bytes);
|
||||||
break;
|
break;
|
||||||
case NetAttributeType_CharArray:
|
case NetAttributeType_CharArray:
|
||||||
message.PackStr(it->second.value.netCharPtr, *bytes);
|
message.PackStr(it->second.value.netCharPtr, bytes);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
numberOfUnknownTypes++;
|
numberOfUnknownTypes++;
|
||||||
|
@ -131,27 +131,27 @@ struct Translator::PrivateData
|
||||||
message.SetSize(bytes);
|
message.SetSize(bytes);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool UnpackHeader(CustomNetProtocol& protocol, SmartPointer<OysterByte> &bytes)
|
bool UnpackHeader(CustomNetProtocol& protocol, OysterByte &bytes)
|
||||||
{
|
{
|
||||||
message.SetSize(0);
|
message.SetSize(0);
|
||||||
int packageSize = message.UnpackInt(*bytes);
|
int packageSize = message.UnpackInt(bytes);
|
||||||
if(packageSize != bytes->GetSize())
|
if(packageSize != bytes.GetSize())
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
short numberOfTypes = message.UnpackShort(*bytes);
|
short numberOfTypes = message.UnpackShort(bytes);
|
||||||
|
|
||||||
for(int i = 0; i < numberOfTypes; i++)
|
for(int i = 0; i < numberOfTypes; i++)
|
||||||
{
|
{
|
||||||
char temp = message.UnpackChar(*bytes);
|
char temp = message.UnpackChar(bytes);
|
||||||
headerString.push_back(temp);
|
headerString.push_back(temp);
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void UnpackMessage(CustomNetProtocol& protocol, SmartPointer<OysterByte> &bytes)
|
void UnpackMessage(CustomNetProtocol& protocol, OysterByte &bytes)
|
||||||
{
|
{
|
||||||
for(int i = 0; i < (int)headerString.size(); i++)
|
for(int i = 0; i < (int)headerString.size(); i++)
|
||||||
{
|
{
|
||||||
|
@ -159,40 +159,40 @@ struct Translator::PrivateData
|
||||||
switch(protocol[i].type)
|
switch(protocol[i].type)
|
||||||
{
|
{
|
||||||
case NetAttributeType_Bool:
|
case NetAttributeType_Bool:
|
||||||
protocol[i].value.netBool = message.UnpackBool(*bytes);
|
protocol[i].value.netBool = message.UnpackBool(bytes);
|
||||||
break;
|
break;
|
||||||
case NetAttributeType_Char:
|
case NetAttributeType_Char:
|
||||||
protocol[i].value.netChar = message.UnpackChar(*bytes);
|
protocol[i].value.netChar = message.UnpackChar(bytes);
|
||||||
break;
|
break;
|
||||||
case NetAttributeType_UnsignedChar:
|
case NetAttributeType_UnsignedChar:
|
||||||
protocol[i].value.netUChar = message.UnpackUnsignedChar(*bytes);
|
protocol[i].value.netUChar = message.UnpackUnsignedChar(bytes);
|
||||||
break;
|
break;
|
||||||
case NetAttributeType_Short:
|
case NetAttributeType_Short:
|
||||||
protocol[i].value.netShort = message.UnpackShort(*bytes);
|
protocol[i].value.netShort = message.UnpackShort(bytes);
|
||||||
break;
|
break;
|
||||||
case NetAttributeType_UnsignedShort:
|
case NetAttributeType_UnsignedShort:
|
||||||
protocol[i].value.netUShort = message.UnpackUnsignedShort(*bytes);
|
protocol[i].value.netUShort = message.UnpackUnsignedShort(bytes);
|
||||||
break;
|
break;
|
||||||
case NetAttributeType_Int:
|
case NetAttributeType_Int:
|
||||||
protocol[i].value.netInt = message.UnpackInt(*bytes);
|
protocol[i].value.netInt = message.UnpackInt(bytes);
|
||||||
break;
|
break;
|
||||||
case NetAttributeType_UnsignedInt:
|
case NetAttributeType_UnsignedInt:
|
||||||
protocol[i].value.netUInt = message.UnpackUnsignedInt(*bytes);
|
protocol[i].value.netUInt = message.UnpackUnsignedInt(bytes);
|
||||||
break;
|
break;
|
||||||
case NetAttributeType_Int64:
|
case NetAttributeType_Int64:
|
||||||
protocol[i].value.netInt64 = message.UnpackInt64(*bytes);
|
protocol[i].value.netInt64 = message.UnpackInt64(bytes);
|
||||||
break;
|
break;
|
||||||
case NetAttributeType_UnsignedInt64:
|
case NetAttributeType_UnsignedInt64:
|
||||||
protocol[i].value.netUInt64 = message.UnpackUnsignedInt64(*bytes);
|
protocol[i].value.netUInt64 = message.UnpackUnsignedInt64(bytes);
|
||||||
break;
|
break;
|
||||||
case NetAttributeType_Float:
|
case NetAttributeType_Float:
|
||||||
protocol[i].value.netFloat = message.UnpackFloat(*bytes);
|
protocol[i].value.netFloat = message.UnpackFloat(bytes);
|
||||||
break;
|
break;
|
||||||
case NetAttributeType_Double:
|
case NetAttributeType_Double:
|
||||||
protocol[i].value.netDouble = message.UnpackDouble(*bytes);
|
protocol[i].value.netDouble = message.UnpackDouble(bytes);
|
||||||
break;
|
break;
|
||||||
case NetAttributeType_CharArray:
|
case NetAttributeType_CharArray:
|
||||||
protocol[i].value.netCharPtr = message.UnpackCStr(*bytes);
|
protocol[i].value.netCharPtr = message.UnpackCStr(bytes);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
numberOfUnknownTypes++;
|
numberOfUnknownTypes++;
|
||||||
|
@ -222,7 +222,7 @@ Translator::~Translator()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Translator::Pack(SmartPointer<OysterByte> &bytes, CustomNetProtocol& protocol)
|
void Translator::Pack(OysterByte &bytes, CustomNetProtocol& protocol)
|
||||||
{
|
{
|
||||||
privateData->headerString.clear();
|
privateData->headerString.clear();
|
||||||
|
|
||||||
|
@ -230,7 +230,7 @@ void Translator::Pack(SmartPointer<OysterByte> &bytes, CustomNetProtocol& protoc
|
||||||
privateData->PackMessage(bytes, protocol);
|
privateData->PackMessage(bytes, protocol);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Translator::Unpack(CustomNetProtocol& protocol, SmartPointer<OysterByte> &bytes)
|
bool Translator::Unpack(CustomNetProtocol& protocol, OysterByte &bytes)
|
||||||
{
|
{
|
||||||
if(!privateData->UnpackHeader(protocol, bytes))
|
if(!privateData->UnpackHeader(protocol, bytes))
|
||||||
{
|
{
|
||||||
|
|
|
@ -49,10 +49,10 @@ namespace Oyster
|
||||||
Translator ();
|
Translator ();
|
||||||
~Translator();
|
~Translator();
|
||||||
|
|
||||||
void Pack(Utility::DynamicMemory::SmartPointer<OysterByte> &bytes, CustomNetProtocol& protocol);
|
void Pack(OysterByte &bytes, CustomNetProtocol& protocol);
|
||||||
|
|
||||||
//Returns false if it discovers any faulty stuff with the package.
|
//Returns false if it discovers any faulty stuff with the package.
|
||||||
bool Unpack(CustomNetProtocol& protocol, Utility::DynamicMemory::SmartPointer<OysterByte> &bytes);
|
bool Unpack(CustomNetProtocol& protocol, OysterByte &bytes);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
struct PrivateData;
|
struct PrivateData;
|
||||||
|
|
|
@ -104,11 +104,11 @@ int Connection::Disconnect()
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int Connection::Send(Utility::DynamicMemory::SmartPointer<OysterByte> &bytes)
|
int Connection::Send(OysterByte &bytes)
|
||||||
{
|
{
|
||||||
int nBytes;
|
int nBytes;
|
||||||
|
|
||||||
nBytes = send(this->socket, *bytes, bytes->GetSize(), 0);
|
nBytes = send(this->socket, bytes, bytes.GetSize(), 0);
|
||||||
if(nBytes == SOCKET_ERROR)
|
if(nBytes == SOCKET_ERROR)
|
||||||
{
|
{
|
||||||
return WSAGetLastError();
|
return WSAGetLastError();
|
||||||
|
@ -117,20 +117,20 @@ int Connection::Send(Utility::DynamicMemory::SmartPointer<OysterByte> &bytes)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int Connection::Recieve(Utility::DynamicMemory::SmartPointer<OysterByte> &bytes)
|
int Connection::Recieve(OysterByte &bytes)
|
||||||
{
|
{
|
||||||
int nBytes;
|
int nBytes;
|
||||||
|
|
||||||
bytes->Resize(1000);
|
bytes.Resize(1000);
|
||||||
nBytes = recv(this->socket, *bytes, 1000, 0);
|
nBytes = recv(this->socket, bytes, 1000, 0);
|
||||||
if(nBytes == SOCKET_ERROR)
|
if(nBytes == SOCKET_ERROR)
|
||||||
{
|
{
|
||||||
bytes->SetSize(0);
|
bytes.SetSize(0);
|
||||||
return WSAGetLastError();
|
return WSAGetLastError();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
bytes->SetSize(nBytes);
|
bytes.SetSize(nBytes);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -177,6 +177,7 @@ int Connection::SetBlockingMode(bool blocking)
|
||||||
return WSAGetLastError();
|
return WSAGetLastError();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Success
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -23,8 +23,8 @@ namespace Oyster
|
||||||
virtual int InitiateServer( unsigned short port );
|
virtual int InitiateServer( unsigned short port );
|
||||||
virtual int InitiateClient();
|
virtual int InitiateClient();
|
||||||
|
|
||||||
virtual int Send( Utility::DynamicMemory::SmartPointer<OysterByte> &bytes );
|
virtual int Send( OysterByte &bytes );
|
||||||
virtual int Recieve( Utility::DynamicMemory::SmartPointer<OysterByte> &bytes );
|
virtual int Recieve( OysterByte &bytes );
|
||||||
|
|
||||||
virtual int Disconnect();
|
virtual int Disconnect();
|
||||||
virtual int Connect( unsigned short port , const char serverName[] );
|
virtual int Connect( unsigned short port , const char serverName[] );
|
||||||
|
|
|
@ -19,8 +19,8 @@ namespace Oyster
|
||||||
|
|
||||||
//sends and recieve functions with bytearrays,
|
//sends and recieve functions with bytearrays,
|
||||||
//will send to the users connection via socket
|
//will send to the users connection via socket
|
||||||
virtual int Send( Utility::DynamicMemory::SmartPointer<OysterByte> &bytes ) = 0;
|
virtual int Send( OysterByte &bytes ) = 0;
|
||||||
virtual int Recieve( Utility::DynamicMemory::SmartPointer<OysterByte> &bytes) = 0;
|
virtual int Recieve( OysterByte &bytes) = 0;
|
||||||
|
|
||||||
//initiates sockets and address for server and client
|
//initiates sockets and address for server and client
|
||||||
virtual int InitiateServer( unsigned short port ) { return false; };
|
virtual int InitiateServer( unsigned short port ) { return false; };
|
||||||
|
|
|
@ -84,7 +84,7 @@ int ThreadedClient::Recv()
|
||||||
{
|
{
|
||||||
int errorCode = -1;
|
int errorCode = -1;
|
||||||
|
|
||||||
SmartPointer<OysterByte> temp = new OysterByte;
|
OysterByte temp;
|
||||||
errorCode = this->connection->Recieve(temp);
|
errorCode = this->connection->Recieve(temp);
|
||||||
|
|
||||||
if(errorCode == 0)
|
if(errorCode == 0)
|
||||||
|
|
|
@ -18,9 +18,6 @@ using namespace Oyster::Network;
|
||||||
using namespace Utility;
|
using namespace Utility;
|
||||||
using namespace Utility::DynamicMemory;
|
using namespace Utility::DynamicMemory;
|
||||||
|
|
||||||
void chat(ThreadedClient &client);
|
|
||||||
void PrintOutMessage(ProtocolSet* set);
|
|
||||||
|
|
||||||
void proc(CustomNetProtocol& protocol)
|
void proc(CustomNetProtocol& protocol)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -40,14 +37,13 @@ int main()
|
||||||
NetworkClient client;
|
NetworkClient client;
|
||||||
|
|
||||||
//Connect to server
|
//Connect to server
|
||||||
errorCode = client.Connect(15151, "193.11.186.101");
|
if(client.Connect(15151, "localhost"))
|
||||||
|
{
|
||||||
|
cout << "FAILED" << endl;
|
||||||
|
}
|
||||||
client.SetRecieverObject(proc, NetworkProtocolCallbackType_Function);
|
client.SetRecieverObject(proc, NetworkProtocolCallbackType_Function);
|
||||||
|
|
||||||
if(errorCode != 0)
|
cout << "Done" << endl;
|
||||||
{
|
|
||||||
wstring errorTest = GetErrorMessage(errorCode);
|
|
||||||
wcout << "errorMessage: " << errorTest << endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
while(1)
|
while(1)
|
||||||
{
|
{
|
||||||
|
|
|
@ -70,28 +70,28 @@
|
||||||
<IntDir>$(SolutionDir)..\Obj\$(ProjectName)\$(PlatformShortName)\$(Configuration)\</IntDir>
|
<IntDir>$(SolutionDir)..\Obj\$(ProjectName)\$(PlatformShortName)\$(Configuration)\</IntDir>
|
||||||
<TargetName>$(ProjectName)_$(PlatformShortName)D</TargetName>
|
<TargetName>$(ProjectName)_$(PlatformShortName)D</TargetName>
|
||||||
<IncludePath>$(SolutionDir)..\External\Include\;$(IncludePath);$(IncludePath);C:\Program Files %28x86%29\Visual Leak Detector\include;$(IncludePath)</IncludePath>
|
<IncludePath>$(SolutionDir)..\External\Include\;$(IncludePath);$(IncludePath);C:\Program Files %28x86%29\Visual Leak Detector\include;$(IncludePath)</IncludePath>
|
||||||
<LibraryPath>$(OutDir)..\DLL\;$(LibraryPath);$(SolutionDir)..\External\Lib\NetworkAPI;$(SolutionDir)..\Bin\DLL;C:\Program Files (x86)\Visual Leak Detector\lib\Win32</LibraryPath>
|
<LibraryPath>$(OutDir)..\DLL\;$(LibraryPath);$(SolutionDir)..\External\Lib\NetworkAPI;$(SolutionDir)..\Bin\DLL;C:\Program Files (x86)\Visual Leak Detector\lib\Win32;$(OutDir)..\DLL\</LibraryPath>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
<OutDir>$(SolutionDir)..\Bin\Executable\</OutDir>
|
<OutDir>$(SolutionDir)..\Bin\Executable\</OutDir>
|
||||||
<IntDir>$(SolutionDir)..\Obj\$(ProjectName)\$(PlatformShortName)\$(Configuration)\</IntDir>
|
<IntDir>$(SolutionDir)..\Obj\$(ProjectName)\$(PlatformShortName)\$(Configuration)\</IntDir>
|
||||||
<TargetName>$(ProjectName)_$(PlatformShortName)</TargetName>
|
<TargetName>$(ProjectName)_$(PlatformShortName)</TargetName>
|
||||||
<IncludePath>C:\Program Files %28x86%29\Visual Leak Detector\include;$(IncludePath)</IncludePath>
|
<IncludePath>C:\Program Files %28x86%29\Visual Leak Detector\include;$(IncludePath)</IncludePath>
|
||||||
<LibraryPath>C:\Program Files (x86)\Visual Leak Detector\lib\Win32;$(LibraryPath)</LibraryPath>
|
<LibraryPath>C:\Program Files (x86)\Visual Leak Detector\lib\Win32;$(LibraryPath);$(OutDir)..\DLL\</LibraryPath>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
<OutDir>$(SolutionDir)..\Bin\Executable\</OutDir>
|
<OutDir>$(SolutionDir)..\Bin\Executable\</OutDir>
|
||||||
<IntDir>$(SolutionDir)..\Obj\$(ProjectName)\$(PlatformShortName)\$(Configuration)\</IntDir>
|
<IntDir>$(SolutionDir)..\Obj\$(ProjectName)\$(PlatformShortName)\$(Configuration)\</IntDir>
|
||||||
<TargetName>$(ProjectName)_$(PlatformShortName)D</TargetName>
|
<TargetName>$(ProjectName)_$(PlatformShortName)D</TargetName>
|
||||||
<IncludePath>C:\Program Files %28x86%29\Visual Leak Detector\include;$(IncludePath)</IncludePath>
|
<IncludePath>C:\Program Files %28x86%29\Visual Leak Detector\include;$(IncludePath)</IncludePath>
|
||||||
<LibraryPath>C:\Program Files (x86)\Visual Leak Detector\lib\Win64;$(LibraryPath)</LibraryPath>
|
<LibraryPath>C:\Program Files (x86)\Visual Leak Detector\lib\Win64;$(LibraryPath);$(OutDir)..\DLL\</LibraryPath>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
<OutDir>$(SolutionDir)..\Bin\Executable\</OutDir>
|
<OutDir>$(SolutionDir)..\Bin\Executable\</OutDir>
|
||||||
<IntDir>$(SolutionDir)..\Obj\$(ProjectName)\$(PlatformShortName)\$(Configuration)\</IntDir>
|
<IntDir>$(SolutionDir)..\Obj\$(ProjectName)\$(PlatformShortName)\$(Configuration)\</IntDir>
|
||||||
<TargetName>$(ProjectName)_$(PlatformShortName)</TargetName>
|
<TargetName>$(ProjectName)_$(PlatformShortName)</TargetName>
|
||||||
<IncludePath>C:\Program Files %28x86%29\Visual Leak Detector\include;$(IncludePath)</IncludePath>
|
<IncludePath>C:\Program Files %28x86%29\Visual Leak Detector\include;$(IncludePath)</IncludePath>
|
||||||
<LibraryPath>C:\Program Files (x86)\Visual Leak Detector\lib\Win64;$(LibraryPath)</LibraryPath>
|
<LibraryPath>C:\Program Files (x86)\Visual Leak Detector\lib\Win64;$(LibraryPath);$(OutDir)..\DLL\</LibraryPath>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
<ClCompile>
|
<ClCompile>
|
||||||
|
@ -116,6 +116,7 @@
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
<AdditionalDependencies>NetworkAPI_$(PlatformShortName)D.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
|
@ -131,6 +132,7 @@
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
|
<AdditionalDependencies>NetworkAPI_$(PlatformShortName)D.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
|
@ -146,6 +148,7 @@
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
|
<AdditionalDependencies>NetworkAPI_$(PlatformShortName)D.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|
|
@ -66,32 +66,32 @@
|
||||||
</ImportGroup>
|
</ImportGroup>
|
||||||
<PropertyGroup Label="UserMacros" />
|
<PropertyGroup Label="UserMacros" />
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
<OutDir>$(SolutionDir)..\External\Lib\$(ProjectName)\</OutDir>
|
<OutDir>$(SolutionDir)..\Bin\Executable\</OutDir>
|
||||||
<IntDir>$(SolutionDir)..\Obj\$(ProjectName)\$(PlatformShortName)\$(Configuration)\</IntDir>
|
<IntDir>$(SolutionDir)..\Obj\$(ProjectName)\$(PlatformShortName)\$(Configuration)\</IntDir>
|
||||||
<TargetName>$(ProjectName)_$(PlatformShortName)D</TargetName>
|
<TargetName>$(ProjectName)_$(PlatformShortName)D</TargetName>
|
||||||
<IncludePath>C:\Program Files %28x86%29\Visual Leak Detector\include;$(IncludePath)</IncludePath>
|
<IncludePath>C:\Program Files %28x86%29\Visual Leak Detector\include;$(IncludePath)</IncludePath>
|
||||||
<LibraryPath>C:\Program Files (x86)\Visual Leak Detector\lib\Win32;$(LibraryPath)</LibraryPath>
|
<LibraryPath>C:\Program Files (x86)\Visual Leak Detector\lib\Win32;$(LibraryPath);$(OutDir)..\DLL\</LibraryPath>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
<OutDir>$(SolutionDir)..\External\Lib\$(ProjectName)\</OutDir>
|
<OutDir>$(SolutionDir)..\Bin\Executable\</OutDir>
|
||||||
<IntDir>$(SolutionDir)..\Obj\$(ProjectName)\$(PlatformShortName)\$(Configuration)\</IntDir>
|
<IntDir>$(SolutionDir)..\Obj\$(ProjectName)\$(PlatformShortName)\$(Configuration)\</IntDir>
|
||||||
<TargetName>$(ProjectName)_$(PlatformShortName)</TargetName>
|
<TargetName>$(ProjectName)_$(PlatformShortName)</TargetName>
|
||||||
<IncludePath>C:\Program Files %28x86%29\Visual Leak Detector\include;$(IncludePath)</IncludePath>
|
<IncludePath>C:\Program Files %28x86%29\Visual Leak Detector\include;$(IncludePath)</IncludePath>
|
||||||
<LibraryPath>C:\Program Files (x86)\Visual Leak Detector\lib\Win32;$(LibraryPath)</LibraryPath>
|
<LibraryPath>C:\Program Files (x86)\Visual Leak Detector\lib\Win32;$(LibraryPath);$(OutDir)..\DLL\</LibraryPath>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
<OutDir>$(SolutionDir)..\External\Lib\$(ProjectName)\</OutDir>
|
<OutDir>$(SolutionDir)..\Bin\Executable\</OutDir>
|
||||||
<IntDir>$(SolutionDir)..\Obj\$(ProjectName)\$(PlatformShortName)\$(Configuration)\</IntDir>
|
<IntDir>$(SolutionDir)..\Obj\$(ProjectName)\$(PlatformShortName)\$(Configuration)\</IntDir>
|
||||||
<TargetName>$(ProjectName)_$(PlatformShortName)D</TargetName>
|
<TargetName>$(ProjectName)_$(PlatformShortName)D</TargetName>
|
||||||
<IncludePath>C:\Program Files %28x86%29\Visual Leak Detector\include;$(IncludePath)</IncludePath>
|
<IncludePath>C:\Program Files %28x86%29\Visual Leak Detector\include;$(IncludePath)</IncludePath>
|
||||||
<LibraryPath>C:\Program Files (x86)\Visual Leak Detector\lib\Win64;$(LibraryPath)</LibraryPath>
|
<LibraryPath>C:\Program Files (x86)\Visual Leak Detector\lib\Win64;$(LibraryPath);$(OutDir)..\DLL\</LibraryPath>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
<OutDir>$(SolutionDir)..\External\Lib\$(ProjectName)\</OutDir>
|
<OutDir>$(SolutionDir)..\Bin\Executable\</OutDir>
|
||||||
<IntDir>$(SolutionDir)..\Obj\$(ProjectName)\$(PlatformShortName)\$(Configuration)\</IntDir>
|
<IntDir>$(SolutionDir)..\Obj\$(ProjectName)\$(PlatformShortName)\$(Configuration)\</IntDir>
|
||||||
<TargetName>$(ProjectName)_$(PlatformShortName)</TargetName>
|
<TargetName>$(ProjectName)_$(PlatformShortName)</TargetName>
|
||||||
<IncludePath>C:\Program Files %28x86%29\Visual Leak Detector\include;$(IncludePath)</IncludePath>
|
<IncludePath>C:\Program Files %28x86%29\Visual Leak Detector\include;$(IncludePath)</IncludePath>
|
||||||
<LibraryPath>C:\Program Files (x86)\Visual Leak Detector\lib\Win64;$(LibraryPath)</LibraryPath>
|
<LibraryPath>C:\Program Files (x86)\Visual Leak Detector\lib\Win64;$(LibraryPath);$(OutDir)..\DLL\</LibraryPath>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
<ClCompile>
|
<ClCompile>
|
||||||
|
@ -104,6 +104,7 @@
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
<DelayLoadDLLs>
|
<DelayLoadDLLs>
|
||||||
</DelayLoadDLLs>
|
</DelayLoadDLLs>
|
||||||
|
<AdditionalDependencies>NetworkAPI_$(PlatformShortName)D.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
</Link>
|
</Link>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
|
|
|
@ -2,16 +2,44 @@
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <vld.h>
|
#include <vld.h>
|
||||||
#include "../NetworkDependencies/WinsockFunctions.h"
|
#include "../NetworkDependencies/WinsockFunctions.h"
|
||||||
|
#include "../NetworkAPI/NetworkServer.h"
|
||||||
|
|
||||||
|
using namespace Oyster::Network;
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
|
void proc(NetworkClient client)
|
||||||
|
{
|
||||||
|
cout << "Hej" << endl;
|
||||||
|
}
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
if(!InitWinSock())
|
NetworkServer server;
|
||||||
|
Oyster::Network::NetworkServer::INIT_DESC desc;
|
||||||
|
desc.port = 15151;
|
||||||
|
desc.callbackType = NetworkClientCallbackType_Function;
|
||||||
|
desc.recvObj = proc;
|
||||||
|
|
||||||
|
if(!server.Init(desc))
|
||||||
{
|
{
|
||||||
cout << "errorMessage: unable to start winsock" << endl;
|
cout << "Init failed" << endl;
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(!server.Start())
|
||||||
|
{
|
||||||
|
cout << "Start failed" << endl;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
cout << "Server started" << endl;
|
||||||
|
|
||||||
|
while(1)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
system("pause");
|
system("pause");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
Loading…
Reference in New Issue