電子書籍の厳選無料作品が豊富!

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とかありますか?
ご存じの方教えてください。

A 回答 (3件)

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



http://bbs.wankuma.com/index.cgi?mode=al2&namber …
http://social.msdn.microsoft.com/Forums/ja-JP/as …


質問者さんへ>

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

えっ? System.Net.Dnsクラスって、DNS使うためのクラスですが。


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

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

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

IPアドレスが異なるのに利用できないという意味がよくわからないのですが、HTTP経由で要求されてくるなら、サーバーで利用できるデータは


Enviroment Variable and FORM,COOKIE ( http://hpcgi1.nifty.com/Iruka/ENV_FORM.cgi/test. … )

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

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

この回答への補足

クライアント端末の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
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!