私はCソケットを使ってクライアント/サーバプログラムを書いています。私は、サーバーがsockaddr_in.sin_addr.s_addrのINADDR_ANYを使用して、任意のネットワークインターフェイスでリッスンできることを指定しています。これは0.0.0.0のIPに相当します。サーバーがリッスンしている実際のIPを取得することは可能ですか? (例:192.168.1.100)CリスニングサーバのIPを取得する
答えて
私は最終的にsolution that worksを見つけることができました。
を編集してください:リンクは死んでいますので、Internet Archive linkをご覧ください。
私にとっては、他の人にも役立つことを願っています。
IPv6で動作しないため、IPv6のサポートは必要ないと思います。 –
いいえ、私はしません。しかし、あなたがなぜそれが適切でないのかを説明すれば、そうする人を助けるかもしれません。私は、使用される関数呼び出しにはIPv6の同等物があると思います。 – Gigi
'getaddrinfo'関数([linux docs](http://linux.about.com/library/cmd/blcmdl3_getaddrinfo.htm)、[Windows文書](http://msdn.microsoft.com/en-us/)は、ライブラリ/ windows/desktop/ms738520(v = vs.85).aspx))はIPv6対応であり、同じ機能を実行します。 –
リスニングソケットをINADDR_ANY
にバインドすると、ソケットは使用可能なすべてのローカルIPをリッスンします。ソケットからリッスンしているIPを特定する方法はありません。その情報が必要な場合は、ローカルIPを別々に列挙しなければなりません(その場合は、pre-acceptバインディングの詳細を調べる必要がある場合は、それぞれのIPを個別のソケットに個別にbind()
個だけ渡すことができます)。ただし、accept()
が確立したクライアント接続を返すと、受け入れられたソケットでgetsockname()
を使用して、特定のIPが接続を受け入れたことを知ることができます。
- 1. リモートアドレス/ IP-Cバークレーソケットを取得する
- 2. CプログラムのLinux IPスタックからIPヘッダフィールドの値を取得するための
- 3. IPカメラのストリームをC#に取得する方法は?
- 4. POSIX Cで独自の外部IPアドレスを取得する
- 5. C#のFTPリクエストからIPアドレスを取得する方法
- 6. 取得IPアドレス
- 7. IPアドレスを取得
- 8. IPアドレスの取得
- 9. node.jsのIPのISPを取得する
- 10. UDP接続からクライアントIPを取得するC#
- 11. C++ソケットポインタから宛先IPを取得する方法
- 12. C#でIP範囲を取得するには?
- 13. C#、TcpClientからIPアドレスを取得する方法は?
- 14. C#でIPアドレスを取得するには?
- 15. エミュレータのシステムIPアドレスを取得する
- 16. 私のIPアドレスを取得する
- 17. Node.js:クライアントのIPを取得
- 18. クライアントマシンのIPアドレスを取得
- 19. Goでリスニングサーバを停止するには
- 20. コンソールアプリケーションでIPアドレスを取得する
- 21. JSPでIPアドレスを取得する
- 22. ピラミッドでリクエストIPアドレスを取得する
- 23. LinuxでマルチキャストソースIPアドレスを取得する
- 24. ローカルIPを取得するには?
- 25. WebOperationContext - リクエストを取得するIp
- 26. GrailsでIPアドレスを取得する
- 27. リモートホストIPアドレスを取得するQTcpServer
- 28. パブリックIPとポートを取得
- 29. ローカルIPアドレスの取得
- 30. C#を使用してIPアドレスとアダプタの説明を取得する
接続が確立される前または後でか。サーバーが複数のアドレスでリッスンする可能性があります。 – blueshift
の前に。私の場合、私は1つのIPだけを持っています。ちょうど私はシステムが決定するようにしています。しかし、私はまだそれが何を決定するか知りたい。 – Gigi
サーバは利用可能なすべての*インタフェースをリッスンします。単一のインターフェースでも複数のIPアドレスを持つことができます。 –