0
私はプレイヤーがオンラインセッションをホストできるゲームを作っています。私はSFMLネットワークライブラリを使用しています。しかし、私は着信接続を待っているときにサーバーホストのIPアドレスを表示します。このIPアドレスはどのように入手できますか?私は内部IPアドレスを探していますが、外部IPアドレスを取得することができれば、それはボーナスになります。SFMLでホスト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'](http://www.sfml-dev.org/documentation/2.4.0/classsf_1_1TcpListener.php#a9504758ea3570e62cb20b209c11776a1)関数へのインタフェースを指定しないと、それは*すべての*インターフェース上で着信接続を待ち受けます(つまり、 'INADDR_ANY'にバインドされます)。したがって、 'TcpListener'クラスから特定のインタフェースのアドレスを取得することはできません。その代わりに、プラットフォームのネットワーク機能を使用して、インターフェースのリストを取得し、どちらが正しいかを推測するか、またはそれらのすべてをリストするだけです。 –
とstlアプローチでは、ipアドレスはrecvfrom()関数のところにあります; – Charlie
@Charlie OneはTCPソケットで 'recvfrom'を使用することはめったにありません。 'TcpSocket'クラスがデータを受け取るためのメンバ関数を持っている場合は、あまりにも単純なC関数を使用することはほとんどありません。最後に、OPの削除接続アドレスではなく、ローカルサーバーの削除接続アドレスです。 –