2016-09-28 2 views
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... 
} 
+0

私が理解しているように、['listen'](http://www.sfml-dev.org/documentation/2.4.0/classsf_1_1TcpListener.php#a9504758ea3570e62cb20b209c11776a1)関数へのインタフェースを指定しないと、それは*すべての*インターフェース上で着信接続を待ち受けます(つまり、 'INADDR_ANY'にバインドされます)。したがって、 'TcpListener'クラスから特定のインタフェースのアドレスを取得することはできません。その代わりに、プラットフォームのネットワーク機能を使用して、インターフェースのリストを取得し、どちらが正しいかを推測するか、またはそれらのすべてをリストするだけです。 –

+0

とstlアプローチでは、ipアドレスはrecvfrom()関数のところにあります; – Charlie

+1

@Charlie OneはTCPソケットで 'recvfrom'を使用することはめったにありません。 'TcpSocket'クラスがデータを受け取るためのメンバ関数を持っている場合は、あまりにも単純なC関数を使用することはほとんどありません。最後に、OPの削除接続アドレスではなく、ローカルサーバーの削除接続アドレスです。 –

答えて

0

私はあなたの問題を誤解してきた場合を除き、あなたはそれらの静的関数を探しています:

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

ドキュメントがhereです。

関連する問題