こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

webサーバでクライアントを特定するには

visual studio 2010 のC#でWebアプりを作成しています。
クライアントは5台と決まっており、クライアントのIPアドレスも決まっています。
サーバにアクセスしてきたクライアントを5台の内どれかを特定する必要があり
System.Net.Dns.GetHostEntry(System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]).AddressList[i].ToString();
上記の様にしました。
するとサーバと同じネットワークアドレスのクライアントのIPアドレスは取得できましたが、
違うネットワークアドレスのクライアントのIPアドレスは取得できませんでした。
サーバにDNSをインストールすれば良いのでしょうか?
ただ単にクライアントを特定するだけでよいので、DNSのインストールは敷居が高いので
違う方法を探しています。
簡易版のDNSとかありますか?
ご存じの方教えてください。

投稿日時 - 2012-12-14 13:56:34

QNo.7844595

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

マルチポストのようなのでその URL を張っておきます。

http://bbs.wankuma.com/index.cgi?mode=al2&namber=64659
http://social.msdn.microsoft.com/Forums/ja-JP/aspnetja/thread/29d650a7-bb29-4182-93a2-2e0662753c92


質問者さんへ>

マルチポストはダメとは言いませんが、他の投稿先の URL 等を書いておいていただければと思います。同じ問題を持つ人が検索でこのページにたどり着いた時、URL をたどって解決できるかもしれませんから。

投稿日時 - 2012-12-16 10:31:52

ANo.2

えっ? System.Net.Dnsクラスって、DNS使うためのクラスですが。
で、.GetHostEntryはリモートホスト名を取得するためのメソッドかと。
既定のDNSサーバに問い合わせに行ってます。

DNSサーバは、おそらく自身にRecognizeされていない、キャッシュを返したのでしょう。
名前が登録されていないので、当然アドレスと同名のHost名。

そもそも、
System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"])
だけでIPアドレスが取得できているはずですが。

投稿日時 - 2012-12-15 08:40:46

ANo.1

IPアドレスが異なるのに利用できないという意味がよくわからないのですが、HTTP経由で要求されてくるなら、サーバーで利用できるデータは
Enviroment Variable and FORM,COOKIE ( http://hpcgi1.nifty.com/Iruka/ENV_FORM.cgi/test.html )

REMOTE_ADDR
REMORT_HOST
HTTP_USER_AGENT
程度です。これらはサーバーの環境変数に格納されていますから、それを呼び出して利用してください。

 それ以上の情報が欲しい場合は、Cookieを利用することになるでしょう。

投稿日時 - 2012-12-14 17:26:00

補足

クライアント端末のIPアドレスをサーバー側で取得できればいいのですが
System.Net.Dns.GetHostEntry(System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]).AddressList[i].ToString();
これを実行すると、サーバと同じネットワークアドレス(セグメントアドレス)のクライアント端末のIPアドレスは取得できましたが、ルータ越しのネットワークアドレスが違うクライアント端末のIPアドレスは取得できませんでした。
サーバにDNSをインストールすればよいのでしょうか?
IPアドレスでなくてもクライアント端末を特定できればいいのですが・・・・
なにかよい方法はありませんか?
よろしくお願いします。

投稿日時 - 2012-12-14 21:46:47

あなたにオススメの質問