diff options
Diffstat (limited to 'src/SFML/Network/UdpSocket.cpp')
-rw-r--r-- | src/SFML/Network/UdpSocket.cpp | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/src/SFML/Network/UdpSocket.cpp b/src/SFML/Network/UdpSocket.cpp index ffa1494..f3e544d 100644 --- a/src/SFML/Network/UdpSocket.cpp +++ b/src/SFML/Network/UdpSocket.cpp @@ -1,7 +1,7 @@ //////////////////////////////////////////////////////////// // // SFML - Simple and Fast Multimedia Library -// Copyright (C) 2007-2015 Laurent Gomila (laurent@sfml-dev.org) +// Copyright (C) 2007-2016 Laurent Gomila (laurent@sfml-dev.org) // // This software is provided 'as-is', without any express or implied warranty. // In no event will the authors be held liable for any damages arising from the use of this software. @@ -64,14 +64,18 @@ unsigned short UdpSocket::getLocalPort() const //////////////////////////////////////////////////////////// -Socket::Status UdpSocket::bind(unsigned short port) +Socket::Status UdpSocket::bind(unsigned short port, const IpAddress& address) { // Create the internal socket if it doesn't exist create(); + // Check if the address is valid + if ((address == IpAddress::None) || (address == IpAddress::Broadcast)) + return Error; + // Bind the socket - sockaddr_in address = priv::SocketImpl::createAddress(INADDR_ANY, port); - if (::bind(getHandle(), reinterpret_cast<sockaddr*>(&address), sizeof(address)) == -1) + sockaddr_in addr = priv::SocketImpl::createAddress(address.toInteger(), port); + if (::bind(getHandle(), reinterpret_cast<sockaddr*>(&addr), sizeof(addr)) == -1) { err() << "Failed to bind socket to port " << port << std::endl; return Error; |