0
Я делаю игру, в которой игрок может провести онлайн-сеанс. Я использую сетевую библиотеку SFML. Но я хочу показать IP-адрес хоста сервера, когда он ждет входящих соединений. Как я могу получить этот IP-адрес? Я ищу внутренний IP-адрес, но если можно получить внешний IP-адрес, это будет бонус.Получить IP-адрес хоста в SFML
sf::TcpListener listener;
// bind the listener to a port
if (listener.listen(53000) != sf::Socket::Done)
{
// error...
}
// accept a new connection
sf::TcpSocket client;
if (listener.accept(client) != sf::Socket::Done)
{
// error...
}
Как я понимаю, если вы не укажете интерфейс к функции ['listen'] (http://www.sfml-dev.org/documentation/2.4.0/classsf_1_1TcpListener.php#a9504758ea3570e62cb20b209c11776a1) то он будет прослушивать входящие соединения на * all * интерфейсах (т. е. связывается с 'INADDR_ANY'). Поэтому вы не можете получить адрес какого-либо конкретного интерфейса из класса 'TcpListener'. Вместо этого вы должны использовать сетевые функции своих платформ для получения списка интерфейсов и либо догадываться, какой из них правильный, либо просто перечислить их все. –
с подходом stl, адрес ip будет прямо там в функции recvfrom();) – Charlie
@Charlie Редко использовать 'recvfrom' в сокете TCP. Редко используются также простые функции C, когда класс 'TcpSocket' имеет функцию-член для приема данных. Наконец, это не удаленные соединения, на которые указывает OP, а на локальный сервер. –