【问题标题】:Get the host IP address in SFML获取 SFML 中的主机 IP 地址
【发布时间】:2016-09-28 20:08:29
【问题描述】:

我正在制作一个玩家可以主持在线会话的游戏。我正在使用 SFML 网络库。但是我想在等待传入连接时显示服务器主机的 IP 地址。我怎样才能得到这个IP地址?我正在寻找内部IP地址,但如果有可能获得外部IP地址,那将是一个奖励。

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 函数指定接口,那么它将侦听 all 接口上的传入连接(即它绑定到INADDR_ANY)。因此,您无法从TcpListener 类中获取任何特定接口的地址。相反,您必须使用您的平台网络功能来获取接口列表,然后猜测哪个是正确的,或者将它们全部列出。
  • 使用 stl 方法,ip 地址就在 recvfrom() 函数中;)
  • @Charlie 很少有人在 TCP 套接字上使用 recvfrom。当TcpSocket 类有一个成员函数来接收数据时,也很少使用普通的 C 函数。最后,这不是 OP 想要的删除连接地址,而是本地服务器的。
  • @JoachimPileborg 不要误会我的意思,我自己使用 SFML,我只是说 stl 方法有时可以更透明

标签: c++ network-programming sfml


【解决方案1】:

除非我误解了你的问题,否则你正在寻找那些静态函数:

sf::IpAddress sf::IpAddress::getLocalAddress();
sf::IpAddress sf::IpAddress::getPublicAddress(Time timeout);

文档是here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-31
    • 2012-03-22
    • 1970-01-01
    • 2014-04-12
    • 2014-06-01
    • 2012-04-12
    • 1970-01-01
    相关资源
    最近更新 更多