[working] wysyla i odbiera dane
This commit is contained in:
@@ -1,2 +1 @@
|
||||
client.cpp
|
||||
Client.vcxproj -> C:\Users\bartool\MyData\MyCode\Cpp\VisualStudio_lap\LanChat\Debug\Client.exe
|
||||
Client.vcxproj -> C:\Users\bartool\MyData\MyCode\Cpp\VisualStudio_lap\LanChat\Debug\Client.exe
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,5 +1,7 @@
|
||||
//Client
|
||||
#include <SocketLibrary/SocketLibrary.h>
|
||||
//#include <string>
|
||||
#include <iostream>
|
||||
|
||||
using namespace SocketLibrary;
|
||||
|
||||
@@ -8,10 +10,33 @@ int main()
|
||||
if (Network::Initialize() == true)
|
||||
{
|
||||
Log::Print("[CLIENT] Winsok zostal zainicjolizowany. Mozemy dzialac.");
|
||||
Socket socket;
|
||||
if (socket.Create() == Result::Success)
|
||||
{
|
||||
Log::Print("[CLIENT] Utworzylem socket.");
|
||||
if (socket.Connect(Endpoint("127.0.0.1", 54000)) == Result::Success)
|
||||
{
|
||||
Log::Print("[CLIENT] Polaczylem sie serverem.");
|
||||
std::string outString = "Wysylam z klienta.";
|
||||
char buffer[256];
|
||||
strcpy_s(buffer, "witam z klienta!\0");
|
||||
|
||||
while (true)
|
||||
{
|
||||
socket.SendAll(outString.data(), outString.size());
|
||||
//socket.SendAll(buffer, 256);
|
||||
std::cout << "wyslalem 256 bajtow" << std::endl;
|
||||
Sleep(1000);
|
||||
}
|
||||
}
|
||||
|
||||
socket.Close();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Network::Shutdown();
|
||||
system("pause");
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
BIN
Debug/Client.exe
BIN
Debug/Client.exe
Binary file not shown.
BIN
Debug/Client.ilk
BIN
Debug/Client.ilk
Binary file not shown.
BIN
Debug/Client.pdb
BIN
Debug/Client.pdb
Binary file not shown.
BIN
Debug/Server.exe
BIN
Debug/Server.exe
Binary file not shown.
BIN
Debug/Server.ilk
BIN
Debug/Server.ilk
Binary file not shown.
BIN
Debug/Server.pdb
BIN
Debug/Server.pdb
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,2 +1 @@
|
||||
server.cpp
|
||||
Server.vcxproj -> C:\Users\bartool\MyData\MyCode\Cpp\VisualStudio_lap\LanChat\Debug\Server.exe
|
||||
Server.vcxproj -> C:\Users\bartool\MyData\MyCode\Cpp\VisualStudio_lap\LanChat\Debug\Server.exe
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,6 +1,6 @@
|
||||
//Server
|
||||
#include <SocketLibrary/SocketLibrary.h>
|
||||
|
||||
#include <iostream>
|
||||
using namespace SocketLibrary;
|
||||
|
||||
int main()
|
||||
@@ -8,15 +8,41 @@ int main()
|
||||
if (Network::Initialize() == true)
|
||||
{
|
||||
Log::Print("[SERVER] Winsok zostal zainicjolizowany. Mozemy dzialac.");
|
||||
Socket socket;
|
||||
if (socket.Create() == Result::Success)
|
||||
|
||||
Socket socketTCP(Protocol::TCP);
|
||||
Socket socketUDP(Protocol::UDP);
|
||||
if (socketTCP.Create() == Result::Success)
|
||||
{
|
||||
socketUDP.Create();
|
||||
socketUDP.Bind(Endpoint("0.0.0.0", 54001));
|
||||
Log::Print("[SERVER] Utworzylem gniazdo.");
|
||||
socket.Close();
|
||||
if (socketTCP.BindAndListen(Endpoint("127.0.0.1", 54000), 5) == Result::Success)
|
||||
{
|
||||
Log::Print("[SERVER] sukces");
|
||||
Socket newConnection;
|
||||
if (socketTCP.Accpet(newConnection) == Result::Success)
|
||||
{
|
||||
Log::Print("[SERVER] accept: sukces");
|
||||
std::string buffer = "";
|
||||
int size = 0;
|
||||
while (true)
|
||||
{
|
||||
newConnection.ReciveAll(buffer, size);
|
||||
std::cout << "[" << size << "] "<< buffer << std::endl;
|
||||
buffer = "";
|
||||
}
|
||||
newConnection.Close();
|
||||
}
|
||||
else
|
||||
{
|
||||
Log::PrintError("[SERVER] accept: porazka", -1);
|
||||
}
|
||||
}
|
||||
socketTCP.Close();
|
||||
}
|
||||
else
|
||||
{
|
||||
Log::PrintError("[SERVER] Nie udalo mi sie utworzyc gniazda.", -1);
|
||||
Log::PrintError("[SERVER] porazka", -1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Binary file not shown.
@@ -1,2 +1,3 @@
|
||||
Socket.cpp
|
||||
C:\Users\bartool\MyData\MyCode\Cpp\VisualStudio_lap\LanChat\SocketLibrary\Socket.cpp(239,27): warning C4018: '<': signed/unsigned mismatch
|
||||
SocketLibrary.vcxproj -> C:\Users\bartool\MyData\MyCode\Cpp\VisualStudio_lap\LanChat\Debug\SocketLibrary.lib
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
79
SocketLibrary/Endpoint.cpp
Normal file
79
SocketLibrary/Endpoint.cpp
Normal file
@@ -0,0 +1,79 @@
|
||||
#include "Endpoint.h"
|
||||
//#include <WS2tcpip.h>
|
||||
#include "Log.h"
|
||||
#include <assert.h>
|
||||
|
||||
using namespace SocketLibrary;
|
||||
|
||||
Endpoint::Endpoint(const char* ip, unsigned short port)
|
||||
{
|
||||
this->_port = port;
|
||||
|
||||
in_addr addr;
|
||||
int result = inet_pton(AF_INET, ip, &addr);
|
||||
|
||||
if (result == 1)
|
||||
{
|
||||
if (addr.S_un.S_addr != INADDR_NONE)
|
||||
{
|
||||
_ip_string = ip;
|
||||
_hostname = ip;
|
||||
_ipversion = IPVersion::IPv4;
|
||||
|
||||
_socketaddr.sin_family = AF_INET;
|
||||
_socketaddr.sin_port = htons(_port);
|
||||
memcpy(&_socketaddr.sin_addr, &addr, sizeof(in_addr));
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
std::string invalidIP = ip;
|
||||
Log::PrintError("To nie jest prawidlowy adres IP. [" + invalidIP + "]", result);
|
||||
}
|
||||
}
|
||||
|
||||
Endpoint::Endpoint(sockaddr* addr)
|
||||
{
|
||||
assert(addr->sa_family == AF_INET);
|
||||
sockaddr_in* newaddr = (sockaddr_in*)addr;
|
||||
_ipversion = IPVersion::IPv4;
|
||||
_port = ntohs(newaddr->sin_port);
|
||||
_ip_string.resize(16);
|
||||
inet_ntop(AF_INET, &newaddr->sin_addr, &_ip_string[0], 16);
|
||||
_hostname = _ip_string;
|
||||
}
|
||||
|
||||
IPVersion Endpoint::GetIpVersion()
|
||||
{
|
||||
return _ipversion;
|
||||
}
|
||||
|
||||
std::string Endpoint::GetHostName()
|
||||
{
|
||||
return _hostname;
|
||||
}
|
||||
|
||||
std::string Endpoint::GetIpString()
|
||||
{
|
||||
return _ip_string;
|
||||
}
|
||||
|
||||
unsigned short Endpoint::GetPort()
|
||||
{
|
||||
return _port;
|
||||
}
|
||||
|
||||
sockaddr_in Endpoint::GetSocketaddrIP()
|
||||
{
|
||||
return _socketaddr;
|
||||
}
|
||||
|
||||
void SocketLibrary::Endpoint::Print()
|
||||
{
|
||||
Log::Print("Hostname: " + _hostname);
|
||||
Log::Print("IP: " + _ip_string);
|
||||
Log::Print("Port: " + std::to_string(_port));
|
||||
Log::Print("Family: " + std::to_string(_socketaddr.sin_family));
|
||||
}
|
||||
26
SocketLibrary/Endpoint.h
Normal file
26
SocketLibrary/Endpoint.h
Normal file
@@ -0,0 +1,26 @@
|
||||
#pragma once
|
||||
#include <string>
|
||||
#include <WS2tcpip.h>
|
||||
#include "ipVersion.h"
|
||||
|
||||
namespace SocketLibrary
|
||||
{
|
||||
class Endpoint
|
||||
{
|
||||
public:
|
||||
Endpoint(const char* ip, unsigned short port);
|
||||
Endpoint(sockaddr* addr);
|
||||
IPVersion GetIpVersion();
|
||||
std::string GetHostName();
|
||||
std::string GetIpString();
|
||||
unsigned short GetPort();
|
||||
sockaddr_in GetSocketaddrIP();
|
||||
void Print();
|
||||
private:
|
||||
IPVersion _ipversion = IPVersion::Unknown;
|
||||
std::string _hostname = "";
|
||||
std::string _ip_string = "";
|
||||
unsigned short _port = 0;
|
||||
sockaddr_in _socketaddr = {};
|
||||
};
|
||||
}
|
||||
12
SocketLibrary/Protocol.h
Normal file
12
SocketLibrary/Protocol.h
Normal file
@@ -0,0 +1,12 @@
|
||||
#pragma once
|
||||
|
||||
namespace SocketLibrary
|
||||
{
|
||||
|
||||
enum class Protocol
|
||||
{
|
||||
Unknown,
|
||||
TCP,
|
||||
UDP
|
||||
};
|
||||
}
|
||||
@@ -4,13 +4,18 @@
|
||||
|
||||
namespace SocketLibrary
|
||||
{
|
||||
Socket::Socket(IPVersion ipversion, SOCKET socket)
|
||||
:_ipversion(ipversion),_socket(socket)
|
||||
Socket::Socket(IPVersion ipversion, Protocol protocol, SOCKET socket)
|
||||
:_ipversion(ipversion), _socket(socket), _protocol(protocol)
|
||||
{
|
||||
assert(_ipversion == IPVersion::IPv4);
|
||||
|
||||
|
||||
}
|
||||
Socket::Socket(Protocol protocol)
|
||||
:_ipversion(IPVersion::IPv4), _protocol(protocol), _socket(INVALID_SOCKET)
|
||||
{
|
||||
assert(_ipversion == IPVersion::IPv4);
|
||||
}
|
||||
|
||||
Result Socket::Create()
|
||||
{
|
||||
@@ -18,24 +23,60 @@ namespace SocketLibrary
|
||||
|
||||
if (_socket != INVALID_SOCKET)
|
||||
{
|
||||
Log::PrintError("Gniazdo juz istnieje.", -1);
|
||||
return Result::Fail;
|
||||
}
|
||||
else
|
||||
{
|
||||
Log::Print("Gniazdo nie istnieje. Tworze gniazdo...");
|
||||
}
|
||||
|
||||
switch (_protocol)
|
||||
{
|
||||
case SocketLibrary::Protocol::Unknown:
|
||||
Log::PrintError("Nie mozna utworzyc gniazda o nieznamym typie.", -1);
|
||||
return Result::Fail;
|
||||
break;
|
||||
case SocketLibrary::Protocol::TCP:
|
||||
_socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
|
||||
break;
|
||||
case SocketLibrary::Protocol::UDP:
|
||||
_socket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
_socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
|
||||
if (_socket == INVALID_SOCKET)
|
||||
{
|
||||
int error = WSAGetLastError();
|
||||
Log::PrintError("Nie udalo sie utworzyc gniazda", error);
|
||||
return Result::Fail;
|
||||
}
|
||||
|
||||
Log::Print("Gniazdo zostalo utworzone.");
|
||||
|
||||
if (SetSocketOption(SocketOption::TCP_NoDelay, TRUE) == Result::Success)
|
||||
else
|
||||
{
|
||||
Log::Print("NoDelay zostalo wlaczone na gniezdzie.");
|
||||
Log::Print("Gniazdo zostalo utworzone. [SOCKET:" + std::to_string(_socket) + "]");
|
||||
}
|
||||
|
||||
switch (_protocol)
|
||||
{
|
||||
case SocketLibrary::Protocol::TCP:
|
||||
if (SetSocketOption(SocketOption::TCP_NoDelay, TRUE) == Result::Success)
|
||||
{
|
||||
Log::Print("NoDelay zostalo wlaczone na gniezdzie TCP.");
|
||||
}
|
||||
break;
|
||||
case SocketLibrary::Protocol::UDP:
|
||||
if (SetSocketOption(SocketOption::UDP_Broadcast, TRUE) == Result::Success)
|
||||
{
|
||||
Log::Print("UDP_Broadcast zostalo wlaczone na gniezdzie UDP.");
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
return Result::Success;
|
||||
}
|
||||
|
||||
@@ -46,6 +87,10 @@ namespace SocketLibrary
|
||||
Log::PrintError("Niemozna zamknac nieistniejacego gniazda.", -1);
|
||||
return Result::Fail;
|
||||
}
|
||||
else
|
||||
{
|
||||
Log::Print("Zamykam gniazdo [SOCKET:" + std::to_string(_socket) + "]");
|
||||
}
|
||||
|
||||
int result = closesocket(_socket);
|
||||
if (result != 0)
|
||||
@@ -54,11 +99,161 @@ namespace SocketLibrary
|
||||
Log::PrintError("Nie udalo sie zamknac gniazda.", error);
|
||||
return Result::Fail;
|
||||
}
|
||||
else
|
||||
{
|
||||
Log::Print("Gniazdo zostalo zamkniete.");
|
||||
}
|
||||
|
||||
_socket = INVALID_SOCKET;
|
||||
return Result::Success;
|
||||
}
|
||||
|
||||
Result Socket::Bind(Endpoint endpoint)
|
||||
{
|
||||
sockaddr_in addr = endpoint.GetSocketaddrIP();
|
||||
int result = bind(_socket, (sockaddr*)(&addr), sizeof(sockaddr_in));
|
||||
if (result != 0)
|
||||
{
|
||||
int error = WSAGetLastError();
|
||||
Log::PrintError("Nie udalo sie powiazac gniazda z portem.", error);
|
||||
return Result::Fail;
|
||||
}
|
||||
else
|
||||
{
|
||||
Log::Print("Udalo sie zwiazac gniazdo z wybranym portem. [PORT]:" + std::to_string(endpoint.GetPort())
|
||||
+ " [SOCKET]:" + std::to_string(_socket));
|
||||
}
|
||||
|
||||
return Result::Success;
|
||||
}
|
||||
|
||||
Result Socket::BindAndListen(Endpoint endpoint, int waitConnection)
|
||||
{
|
||||
if (Bind(endpoint) != Result::Success)
|
||||
{
|
||||
return Result::Fail;
|
||||
}
|
||||
|
||||
int result = listen(_socket, waitConnection);
|
||||
if (result != 0)
|
||||
{
|
||||
int error = WSAGetLastError();
|
||||
Log::PrintError("Nie udalo sie ustawic gniazda w tryb nasluchu", error);
|
||||
return Result::Fail;
|
||||
}
|
||||
else
|
||||
{
|
||||
Log::Print("Gniazdo jest od teraz w trybie nasluchu.");
|
||||
}
|
||||
|
||||
return Result::Success;
|
||||
}
|
||||
|
||||
Result Socket::Accpet(Socket& outSocket)
|
||||
{
|
||||
sockaddr_in addr = {};
|
||||
int len = sizeof(sockaddr_in);
|
||||
SOCKET acceptedConnection = accept(_socket, (sockaddr*)(&addr), &len);
|
||||
if (acceptedConnection == INVALID_SOCKET)
|
||||
{
|
||||
int error = WSAGetLastError();
|
||||
Log::PrintError("Wystapil problem przy akceptacji polaczenia.", error);
|
||||
return Result::Fail;
|
||||
}
|
||||
else
|
||||
{
|
||||
Log::Print("Zaakceptowano nowe poleczenie [SOCKET:" + std::to_string(acceptedConnection) + "]");
|
||||
}
|
||||
|
||||
Endpoint newConnectionEndpoint((sockaddr*)&addr);
|
||||
newConnectionEndpoint.Print();
|
||||
|
||||
outSocket = Socket(IPVersion::IPv4, Protocol::TCP, acceptedConnection);
|
||||
return Result::Success;
|
||||
}
|
||||
|
||||
Result Socket::Connect(Endpoint endpoint)
|
||||
{
|
||||
sockaddr_in addr = endpoint.GetSocketaddrIP();
|
||||
int result = connect(_socket, (sockaddr*)(&addr), sizeof(sockaddr_in));
|
||||
if (result != 0)
|
||||
{
|
||||
int error = WSAGetLastError();
|
||||
Log::PrintError("Nie mozna nawiazac polaczenia z " + endpoint.GetIpString(), error);
|
||||
return Result::Fail;
|
||||
}
|
||||
else
|
||||
{
|
||||
Log::Print("Nawiazano nowe polaczenie z " + endpoint.GetIpString());
|
||||
}
|
||||
|
||||
return Result::Success;
|
||||
}
|
||||
|
||||
Result Socket::SendAll(const void* data, int numberOfBytes)
|
||||
{
|
||||
int totalBytesSent = 0;
|
||||
uint32_t numberBytesToSend = numberOfBytes;
|
||||
numberBytesToSend = htonl(numberBytesToSend);
|
||||
Result result = Send(&numberBytesToSend, sizeof(uint32_t), totalBytesSent);
|
||||
if (totalBytesSent != sizeof(uint32_t))
|
||||
{
|
||||
Log::PrintError("Nie mozna wyslac dlugosci strumienia danych.", -1);
|
||||
return Result::Fail;
|
||||
}
|
||||
|
||||
totalBytesSent = 0;
|
||||
|
||||
while (totalBytesSent < numberOfBytes)
|
||||
{
|
||||
int bytesLeft = numberOfBytes - totalBytesSent;
|
||||
int bytesSent = 0;
|
||||
char* bufferOffset = (char*)data + totalBytesSent;
|
||||
result = Send(bufferOffset, bytesLeft, bytesSent);
|
||||
if (result == Result::Fail)
|
||||
{
|
||||
Log::PrintError("Wyslalem " + std::to_string(totalBytesSent) + " z " + std::to_string(numberOfBytes) + " bajtow.", -1);
|
||||
return Result::Fail;
|
||||
}
|
||||
totalBytesSent += bytesSent;
|
||||
}
|
||||
|
||||
return Result::Success;
|
||||
}
|
||||
|
||||
Result Socket::ReciveAll(std::string& output, int& numberOfBytes)
|
||||
{
|
||||
int totalBytesRecive = 0;
|
||||
uint32_t numberBytesToRecive = 0;
|
||||
Result result = Recive(&numberBytesToRecive, sizeof(uint32_t), totalBytesRecive);
|
||||
if (totalBytesRecive != sizeof(uint32_t))
|
||||
{
|
||||
Log::PrintError("Nie mozna odebrac dlugosci strumienia dancyh.", -1);
|
||||
Result::Fail;
|
||||
}
|
||||
|
||||
totalBytesRecive = 0;
|
||||
numberBytesToRecive = ntohl(numberBytesToRecive);
|
||||
output.resize(numberBytesToRecive + 1);
|
||||
|
||||
while (totalBytesRecive < numberBytesToRecive)
|
||||
{
|
||||
int bytesLeft = numberBytesToRecive - totalBytesRecive;
|
||||
int bytesRecive = 0;
|
||||
char* bufferOffset = &output[0] + totalBytesRecive;
|
||||
Result result = Recive(bufferOffset, bytesLeft, bytesRecive);
|
||||
if (result == Result::Fail)
|
||||
{
|
||||
Log::PrintError("Odebralem " + std::to_string(totalBytesRecive) + " z " + std::to_string(numberOfBytes) + " bajtow.", -1);
|
||||
return Result::Fail;
|
||||
}
|
||||
totalBytesRecive += bytesRecive;
|
||||
}
|
||||
numberOfBytes = totalBytesRecive;
|
||||
|
||||
return Result::Success;
|
||||
}
|
||||
|
||||
SOCKET Socket::GetSocket()
|
||||
{
|
||||
return _socket;
|
||||
@@ -68,6 +263,40 @@ namespace SocketLibrary
|
||||
{
|
||||
return _ipversion;
|
||||
}
|
||||
|
||||
Result Socket::Send(const void* data, int size, int& bytesSent)
|
||||
{
|
||||
bytesSent = send(_socket, (const char*)data, size, NULL);
|
||||
|
||||
if (bytesSent == SOCKET_ERROR)
|
||||
{
|
||||
int error = WSAGetLastError();
|
||||
Log::PrintError("Wystapil problem podczas wysylania dancyh.", error);
|
||||
return Result::Fail;
|
||||
}
|
||||
|
||||
return Result::Success;
|
||||
}
|
||||
|
||||
Result Socket::Recive(void* buffor, int size, int& bytesRecived)
|
||||
{
|
||||
bytesRecived = recv(_socket, (char*)buffor, size, NULL);
|
||||
if (bytesRecived == 0)
|
||||
{
|
||||
Log::PrintError("Polaczenie zostalo zamkniete.", -1);
|
||||
// TODO - zamknac gniazdo
|
||||
return Result::Fail;
|
||||
}
|
||||
if (bytesRecived == SOCKET_ERROR)
|
||||
{
|
||||
int error = WSAGetLastError();
|
||||
Log::PrintError("Wystapil problem podczas odbierania dancyh.", error);
|
||||
return Result::Fail;
|
||||
}
|
||||
|
||||
return Result::Success;
|
||||
}
|
||||
|
||||
Result Socket::SetSocketOption(SocketOption option, BOOL value)
|
||||
{
|
||||
int result = 0;
|
||||
@@ -76,6 +305,9 @@ namespace SocketLibrary
|
||||
case SocketOption::TCP_NoDelay:
|
||||
result = setsockopt(_socket, IPPROTO_TCP, TCP_NODELAY, (const char*)&value, sizeof(value));
|
||||
break;
|
||||
case SocketOption::UDP_Broadcast:
|
||||
result = setsockopt(_socket, SOL_SOCKET, SO_BROADCAST, (const char*)&value, sizeof(value));
|
||||
break;
|
||||
default:
|
||||
return Result::Fail;
|
||||
}
|
||||
|
||||
@@ -2,22 +2,34 @@
|
||||
#include <WinSock2.h>
|
||||
|
||||
#include "ipVersion.h"
|
||||
#include "Protocol.h"
|
||||
#include "Result.h"
|
||||
#include "SocketOption.h"
|
||||
#include "Endpoint.h"
|
||||
|
||||
namespace SocketLibrary
|
||||
{
|
||||
class Socket
|
||||
{
|
||||
public:
|
||||
Socket(IPVersion ipversion = IPVersion::IPv4, SOCKET socket = INVALID_SOCKET); //(..., SocketHandle handle)
|
||||
Socket(IPVersion ipversion = IPVersion::IPv4, Protocol protocol = Protocol::TCP, SOCKET socket = INVALID_SOCKET); //(..., SocketHandle handle)
|
||||
Socket(Protocol protocol);
|
||||
Result Create();
|
||||
Result Close();
|
||||
Result Bind(Endpoint endpoint);
|
||||
Result BindAndListen(Endpoint endpoint, int waitConnection = 5);
|
||||
Result Accpet(Socket& outSocket);
|
||||
Result Connect(Endpoint endpoint);
|
||||
Result SendAll(const void * data, int numberOfBytes);
|
||||
Result ReciveAll(std::string& output, int& numberOfBytes);
|
||||
SOCKET GetSocket(); //SocketHandle GetHandle()
|
||||
IPVersion GetIpVersion();
|
||||
private:
|
||||
Result Send(const void * data, int size, int& bytesSent);
|
||||
Result Recive(void * buffor, int size, int & bytesRecived);
|
||||
Result SetSocketOption(SocketOption option, BOOL value);
|
||||
IPVersion _ipversion = IPVersion::IPv4;
|
||||
Protocol _protocol = Protocol::TCP;
|
||||
SOCKET _socket = INVALID_SOCKET;
|
||||
|
||||
};
|
||||
|
||||
@@ -142,15 +142,18 @@
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="Endpoint.h" />
|
||||
<ClInclude Include="ipVersion.h" />
|
||||
<ClInclude Include="Log.h" />
|
||||
<ClInclude Include="Network.h" />
|
||||
<ClInclude Include="Protocol.h" />
|
||||
<ClInclude Include="Result.h" />
|
||||
<ClInclude Include="Socket.h" />
|
||||
<ClInclude Include="SocketLibrary.h" />
|
||||
<ClInclude Include="SocketOption.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="Endpoint.cpp" />
|
||||
<ClCompile Include="Log.cpp" />
|
||||
<ClCompile Include="Network.cpp" />
|
||||
<ClCompile Include="Socket.cpp" />
|
||||
|
||||
@@ -36,6 +36,12 @@
|
||||
<ClInclude Include="SocketOption.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Endpoint.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Protocol.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="Network.cpp">
|
||||
@@ -47,5 +53,8 @@
|
||||
<ClCompile Include="Socket.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Endpoint.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
@@ -5,5 +5,6 @@ namespace SocketLibrary
|
||||
enum class SocketOption
|
||||
{
|
||||
TCP_NoDelay,
|
||||
UDP_Broadcast,
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user