Skip to content

Commit

Permalink
Add files via upload
Browse files Browse the repository at this point in the history
  • Loading branch information
Septchi authored Aug 20, 2020
0 parents commit 50c4bd7
Show file tree
Hide file tree
Showing 22 changed files with 423 additions and 0 deletions.
Binary file added Listener/Debug/Listener.exe
Binary file not shown.
Binary file added Listener/Debug/Listener.ilk
Binary file not shown.
Binary file added Listener/Debug/Listener.pdb
Binary file not shown.
31 changes: 31 additions & 0 deletions Listener/Listener.sln
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.30225.117
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Listener", "Listener\Listener.vcxproj", "{3A965BD6-82F2-4834-BAEA-188EC34456EC}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{3A965BD6-82F2-4834-BAEA-188EC34456EC}.Debug|x64.ActiveCfg = Debug|x64
{3A965BD6-82F2-4834-BAEA-188EC34456EC}.Debug|x64.Build.0 = Debug|x64
{3A965BD6-82F2-4834-BAEA-188EC34456EC}.Debug|x86.ActiveCfg = Debug|Win32
{3A965BD6-82F2-4834-BAEA-188EC34456EC}.Debug|x86.Build.0 = Debug|Win32
{3A965BD6-82F2-4834-BAEA-188EC34456EC}.Release|x64.ActiveCfg = Release|x64
{3A965BD6-82F2-4834-BAEA-188EC34456EC}.Release|x64.Build.0 = Release|x64
{3A965BD6-82F2-4834-BAEA-188EC34456EC}.Release|x86.ActiveCfg = Release|Win32
{3A965BD6-82F2-4834-BAEA-188EC34456EC}.Release|x86.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {2B622095-CA3C-4153-8B5E-3074EBD915AE}
EndGlobalSection
EndGlobal
3 changes: 3 additions & 0 deletions Listener/Listener/Debug/Listener.log
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
 main.cpp
C:\Users\User\Documents\Visual Studio 2019\Projects\Listener\Listener\main.cpp(9,1): warning C4326: return type of 'main' should be 'int' instead of 'void'
Listener.vcxproj -> C:\Users\User\Documents\Visual Studio 2019\Projects\Listener\Debug\Listener.exe
Binary file not shown.
Binary file not shown.
Binary file not shown.
2 changes: 2 additions & 0 deletions Listener/Listener/Debug/Listener.tlog/Listener.lastbuildstate
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
PlatformToolSet=v142:VCToolArchitecture=Native32Bit:VCToolsVersion=14.26.28801:TargetPlatformVersion=10.0.18362.0:
Debug|Win32|C:\Users\User\Documents\Visual Studio 2019\Projects\Listener\|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file added Listener/Listener/Debug/TcpListener.obj
Binary file not shown.
Binary file added Listener/Listener/Debug/main.obj
Binary file not shown.
Binary file added Listener/Listener/Debug/vc142.idb
Binary file not shown.
Binary file added Listener/Listener/Debug/vc142.pdb
Binary file not shown.
151 changes: 151 additions & 0 deletions Listener/Listener/Listener.vcxproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,151 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<VCProjectVersion>16.0</VCProjectVersion>
<Keyword>Win32Proj</Keyword>
<ProjectGuid>{3a965bd6-82f2-4834-baea-188ec34456ec}</ProjectGuid>
<RootNamespace>Listener</RootNamespace>
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="Shared">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<LinkIncremental>true</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<LinkIncremental>true</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="main.cpp" />
<ClCompile Include="TcpListener.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="TcpListener.h" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>
30 changes: 30 additions & 0 deletions Listener/Listener/Listener.vcxproj.filters
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;c++;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="main.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="TcpListener.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="TcpListener.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
</Project>
4 changes: 4 additions & 0 deletions Listener/Listener/Listener.vcxproj.user
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup />
</Project>
140 changes: 140 additions & 0 deletions Listener/Listener/TcpListener.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,140 @@
#include "TcpListener.h"

CTcpListener::CTcpListener(std::string ipAddress, int port, MessageReceivedHandler handler)
:m_ipAddress(ipAddress), m_port(port), MessageReceived(handler)
{

}


CTcpListener::~CTcpListener()
{
CTcpListener::CleanUp();
}


//send message to client
void CTcpListener::Send(int clientSocket, std::string msg)
{
send(clientSocket, msg.c_str(), msg.size() + 1, 0);
}


//Intialize winsock
bool CTcpListener::Init()
{
WSAData data;
WORD ver = MAKEWORD(2,2);

int WsCheck = WSAStartup(ver, &data);

return WsCheck == 0;
}

void CTcpListener::Run()
{
char buf[MAX_BUFFER_SIZE];

ZeroMemory(buf, MAX_BUFFER_SIZE);
while (true)
{
//create a listening socket
SOCKET listening = createSocket();
if (listening == INVALID_SOCKET) break;

fd_set master;
FD_ZERO(&master);
FD_SET(listening, &master);


while (true)
{
fd_set copy = master;
int sockCount = select(0, &copy, nullptr, nullptr, nullptr);
for (int i = 0; i < sockCount; i++)
{
SOCKET sock = copy.fd_array[i];
if (sock == listening)
{
//accepting client
SOCKET client = accept(listening, nullptr, nullptr);

//add client to list
FD_SET(client, &master);
//welcome message
std::string msg = "hell0\r\n";
Send(client, msg);

}
else
{
int bytesRecv = recv(sock, buf, MAX_BUFFER_SIZE, 0);
if (bytesRecv <= 0)
{
//close socket
closesocket(sock);
FD_CLR(sock, &master);
}
else
{
for (int i = 0; i < master.fd_count; i++)
{
//send to other clients and not listening socket
SOCKET outsock = master.fd_array[i];
if (outsock != listening && outsock != sock)
{
MessageReceived(this, outsock, std::string(buf, 0, bytesRecv));
}
}
}

}

}
}
}
}

void CTcpListener::CleanUp()
{

}
//send and recieve

//cleanup


//create socket
SOCKET CTcpListener::createSocket()
{
SOCKET listening = socket(AF_INET, SOCK_STREAM, 0);
if (listening != INVALID_SOCKET)
{
sockaddr_in hint;
hint.sin_family = AF_INET;
hint.sin_port = htons(m_port);
inet_pton(AF_INET, m_ipAddress.c_str(), &hint.sin_addr);

int bindCheck = bind(listening, (sockaddr*)&hint, sizeof(hint));
if (bindCheck != SOCKET_ERROR)
{
int listeningCheck = listen(listening, SOMAXCONN);
if (listeningCheck == SOCKET_ERROR)
{
return -1;
}
}
else return -1;

}
return listening;
}
//wait for connection
SOCKET CTcpListener::ConnectingClient(SOCKET listening)
{
sockaddr_in client;
int clientSize = sizeof(client);
SOCKET clientSocket = accept(listening, (sockaddr*)&client, &clientSize);
return clientSocket;
}

Loading

0 comments on commit 50c4bd7

Please sign in to comment.