Added TcpListener::GetLocalPort()

git-svn-id: https://sfml.svn.sourceforge.net/svnroot/sfml/branches/sfml2@1480 4e206d99-4929-0410-ac5d-dfc041789085
This commit is contained in:
LaurentGom 2010-03-29 17:02:10 +00:00
parent 87f712e0c6
commit 507f467390
5 changed files with 38 additions and 3 deletions

View File

@ -99,6 +99,9 @@ public :
/// Note that this function know nothing about the standard
/// fonts installed on the user's system, thus you can't
/// load them directly.
/// Warning: SFML cannot preload all the font data in this
/// function, so the buffer pointed by \a data has to remain
/// valid as long as the font is used.
///
/// \param data Pointer to the file data in memory
/// \param sizeInBytes Size of the data to load, in bytes

View File

@ -49,6 +49,19 @@ public :
////////////////////////////////////////////////////////////
TcpListener();
////////////////////////////////////////////////////////////
/// \brief Get the port to which the socket is bound locally
///
/// If the socket is not listening to a port, this function
/// returns 0.
///
/// \return Port to which the socket is bound
///
/// \see Listen
///
////////////////////////////////////////////////////////////
unsigned short GetLocalPort() const;
////////////////////////////////////////////////////////////
/// \brief Start listening for connections
///

View File

@ -159,7 +159,7 @@ IpAddress IpAddress::GetLocalAddress()
priv::SocketImpl::Close(sock);
// Finally build the IP address
localAddress.myAddress = address.sin_addr.s_addr;
localAddress = IpAddress(ntohl(address.sin_addr.s_addr));
return localAddress;
}

View File

@ -41,6 +41,25 @@ Socket(Tcp)
}
////////////////////////////////////////////////////////////
unsigned short TcpListener::GetLocalPort() const
{
if (GetHandle() != priv::SocketImpl::InvalidSocket())
{
// Retrieve informations about the local end of the socket
sockaddr_in address;
priv::SocketImpl::AddrLength size = sizeof(address);
if (getsockname(GetHandle(), reinterpret_cast<sockaddr*>(&address), &size) != -1)
{
return ntohs(address.sin_port);
}
}
// We failed to retrieve the port
return 0;
}
////////////////////////////////////////////////////////////
Socket::Status TcpListener::Listen(unsigned short port)
{