Skip to content

Commit bc44c8b

Browse files
authored
Merge pull request #7 from Kilemonn/add-localhostname-arg-to-server-socket-constructor
Add localhostname arg to server socket constructor
2 parents a956c28 + e7cfd73 commit bc44c8b

File tree

5 files changed

+15
-15
lines changed

5 files changed

+15
-15
lines changed

CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ set(CMAKE_CXX_STANDARD 17)
44
set(CMAKE_CXX_STANDARD_REQUIRED ON)
55
set(PROJECT_NAME CppSocketLibrary)
66

7-
project(${PROJECT_NAME} VERSION 0.5.1)
7+
project(${PROJECT_NAME} VERSION 0.5.2)
88

99
set(HEADERS
1010
src/serversocket/ServerSocket.h

src/serversocket/ServerSocket.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ namespace kt
5252
* @throw SocketException - If the ServerSocket is unable to be instanciated or begin listening.
5353
* @throw BindingException - If the ServerSocket is unable to bind to the specific port specified.
5454
*/
55-
kt::ServerSocket::ServerSocket(const kt::SocketType type, const unsigned short& port, const unsigned int& connectionBacklogSize, const kt::InternetProtocolVersion protocolVersion)
55+
kt::ServerSocket::ServerSocket(const kt::SocketType type, const std::optional<std::string>& localHostname, const unsigned short& port, const unsigned int& connectionBacklogSize, const kt::InternetProtocolVersion protocolVersion)
5656
{
5757
this->socketDescriptor = getInvalidSocketValue();
5858
this->port = port;
@@ -64,7 +64,7 @@ namespace kt
6464
throw SocketException("Failed to create ServerSocket with 'None' SocketType.");
6565
}
6666

67-
this->constructSocket(connectionBacklogSize);
67+
this->constructSocket(localHostname, connectionBacklogSize);
6868
}
6969

7070
/**
@@ -99,11 +99,11 @@ namespace kt
9999
return *this;
100100
}
101101

102-
void kt::ServerSocket::constructSocket(const unsigned int& connectionBacklogSize)
102+
void kt::ServerSocket::constructSocket(const std::optional<std::string>& localHostname, const unsigned int& connectionBacklogSize)
103103
{
104104
if (this->type == kt::SocketType::Wifi)
105105
{
106-
this->constructWifiSocket(connectionBacklogSize);
106+
this->constructWifiSocket(localHostname, connectionBacklogSize);
107107
}
108108
else if (this->type == kt::SocketType::Bluetooth)
109109
{
@@ -170,7 +170,7 @@ namespace kt
170170

171171
}
172172

173-
void kt::ServerSocket::constructWifiSocket(const unsigned int& connectionBacklogSize)
173+
void kt::ServerSocket::constructWifiSocket(const std::optional<std::string>& localHostname, const unsigned int& connectionBacklogSize)
174174
{
175175

176176
#ifdef _WIN32
@@ -182,7 +182,7 @@ namespace kt
182182
#endif
183183

184184
addrinfo hints = kt::createTcpHints(this->protocolVersion, AI_PASSIVE);
185-
std::pair<std::vector<kt::SocketAddress>, int> resolveAddresses = kt::resolveToAddresses(kt::getLocalAddress(protocolVersion), this->port, hints);
185+
std::pair<std::vector<kt::SocketAddress>, int> resolveAddresses = kt::resolveToAddresses(localHostname.has_value() ? localHostname.value().c_str() : kt::getLocalAddress(protocolVersion), this->port, hints);
186186

187187
if (resolveAddresses.second != 0 || resolveAddresses.first.empty())
188188
{

src/serversocket/ServerSocket.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,14 +48,14 @@ namespace kt
4848
SOCKET socketDescriptor = getInvalidSocketValue();
4949

5050
void setDiscoverable();
51-
void constructSocket(const unsigned int&);
51+
void constructSocket(const std::optional<std::string>&, const unsigned int&);
5252
void constructBluetoothSocket(const unsigned int&);
53-
void constructWifiSocket(const unsigned int&);
53+
void constructWifiSocket(const std::optional<std::string>& localHostname, const unsigned int&);
5454
void initialisePortNumber();
5555

5656
public:
5757
ServerSocket() = default;
58-
ServerSocket(const kt::SocketType, const unsigned short& = 0, const unsigned int& = 20, const kt::InternetProtocolVersion = kt::InternetProtocolVersion::Any);
58+
ServerSocket(const kt::SocketType, const std::optional<std::string>& = std::nullopt, const unsigned short& = 0, const unsigned int& = 20, const kt::InternetProtocolVersion = kt::InternetProtocolVersion::Any);
5959
ServerSocket(const kt::ServerSocket&);
6060
kt::ServerSocket& operator=(const kt::ServerSocket&);
6161

tests/serversocket/ServerSocketTCPTest.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ namespace kt
3939
TEST_F(ServerSocketTCPTest, TestConstructors)
4040
{
4141
EXPECT_THROW({
42-
ServerSocket server2(SocketType::Wifi, serverSocket.getPort());
42+
ServerSocket server2(SocketType::Wifi, std::nullopt, serverSocket.getPort());
4343
}, BindingException);
4444
}
4545

@@ -83,7 +83,7 @@ namespace kt
8383
*/
8484
TEST_F(ServerSocketTCPTest, TestServerSocketAsIPV6)
8585
{
86-
ServerSocket ipv6Server(SocketType::Wifi, 0, 20, InternetProtocolVersion::IPV6);
86+
ServerSocket ipv6Server(SocketType::Wifi, std::nullopt, 0, 20, InternetProtocolVersion::IPV6);
8787

8888
TCPSocket client("0000:0000:0000:0000:0000:0000:0000:0001", ipv6Server.getPort());
8989
TCPSocket serverClient = ipv6Server.acceptTCPConnection();
@@ -105,7 +105,7 @@ namespace kt
105105
{
106106
serverSocket.close();
107107

108-
ServerSocket ipv4Server(SocketType::Wifi, 0, 20, InternetProtocolVersion::IPV4);
108+
ServerSocket ipv4Server(SocketType::Wifi, std::nullopt, 0, 20, InternetProtocolVersion::IPV4);
109109
ASSERT_EQ(InternetProtocolVersion::IPV4, ipv4Server.getInternetProtocolVersion());
110110

111111
// Attempt to connect to a local server using a IPV6 address (which is not being hosted)

tests/socket/TCPSocketTest.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ namespace kt
2323
TCPSocket socket;
2424

2525
protected:
26-
TCPSocketTest() : serverSocket(SocketType::Wifi, 0), socket(LOCALHOST, serverSocket.getPort()) { }
26+
TCPSocketTest() : serverSocket(SocketType::Wifi), socket(LOCALHOST, serverSocket.getPort()) { }
2727
void TearDown() override
2828
{
2929
socket.close();
@@ -297,7 +297,7 @@ namespace kt
297297

298298
TEST_F(TCPSocketTest, IPV6Address)
299299
{
300-
ServerSocket ipv6ServerSocket(SocketType::Wifi, 0, 20, InternetProtocolVersion::IPV6);
300+
ServerSocket ipv6ServerSocket(SocketType::Wifi, std::nullopt, 0, 20, InternetProtocolVersion::IPV6);
301301

302302
TCPSocket ipv6Socket("0:0:0:0:0:0:0:1", ipv6ServerSocket.getPort());
303303

0 commit comments

Comments
 (0)