2011-08-08 30 views
1

クライアントマシンのIPアドレスをsockaddrから取得できますか?クライアントのIPアドレス/ MAC

クライアントからは、ユーザーがサーバーに接続するためのシステムまたはブラウザーを意味します。

クライアントが一部のプロキシ/ルータの背後にあり、サーバーに直接接続していないと仮定します。

答えて

3

サーバーが応答パケットを送信するIPアドレスを取得できます。多くの場合、これは、クライアントコンピュータのIPアドレスですが、それはする必要はありません(多くの場合、企業ネットワークで使用される)

  • のIPv4 NATデバイスは、クライアントのIPアドレスを隠し、代わりにNATデバイスのアドレスを公開します。
  • 6対4翻訳。クライアントがネイティブのIPv6専用クライアントの場合、IPv4サーバーには、IPv4接続を提供する6対4ゲートウェイのIPv4アドレスが表示されます。
  • クライアントがインターネットに直接接続されているのではなく、サーバーの代わりに要求を実行するプロキシサーバーに接続するプロキシです。この場合、サーバーにはプロキシサーバーのアドレスが表示されます。

クライアントコンピュータのIPアドレスが必要な場合、クライアントはデータをサーバーに送信する必要があります。このように受け取った住所が実際のものであるという保証はありません。たとえそれが本当のものであっても、ユニークであることを保証することはできません(多くの企業ネットワークは、内部使用のために予約された192.168.X.Xシリーズのアドレスを使用します)。また、内部アドレスでクライアントに接続できない可能性はほとんどありません。

0

チェック同じ質問にこの答え(私が正しくあなたの質問を理解していれば)Getting IPV4 address from a sockaddr structure

socket.h状態:

int accept (int socket, struct sockaddr *address, 
           socklen_t *address_len); 

アドレス:どちらかNULLポインタ、またはどこsockaddr構造体へのポインタ接続ソケットのアドレスが返されます。

関連する問題