- 締切済み
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とかありますか? ご存じの方教えてください。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- WebSurfer
- ベストアンサー率55% (33/59)
マルチポストのようなのでその 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 をたどって解決できるかもしれませんから。
- shockatz
- ベストアンサー率80% (153/191)
えっ? System.Net.Dnsクラスって、DNS使うためのクラスですが。 で、.GetHostEntryはリモートホスト名を取得するためのメソッドかと。 既定のDNSサーバに問い合わせに行ってます。 DNSサーバは、おそらく自身にRecognizeされていない、キャッシュを返したのでしょう。 名前が登録されていないので、当然アドレスと同名のHost名。 そもそも、 System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]) だけでIPアドレスが取得できているはずですが。
- ORUKA1951
- ベストアンサー率45% (5062/11036)
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を利用することになるでしょう。
補足
クライアント端末のIPアドレスをサーバー側で取得できればいいのですが System.Net.Dns.GetHostEntry(System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]).AddressList[i].ToString(); これを実行すると、サーバと同じネットワークアドレス(セグメントアドレス)のクライアント端末のIPアドレスは取得できましたが、ルータ越しのネットワークアドレスが違うクライアント端末のIPアドレスは取得できませんでした。 サーバにDNSをインストールすればよいのでしょうか? IPアドレスでなくてもクライアント端末を特定できればいいのですが・・・・ なにかよい方法はありませんか? よろしくお願いします。