Avatar billede skg Nybegynder
26. juli 2003 - 12:33 Der er 8 kommentarer og
2 løsninger

Find serverens IP ( uden brug af Request.ServerVariables )

Hej

Jeg har prøvet at finde en anden måde at hente min webservers ip ud på, fra en aspx side, uden at skulle bruge Request.ServerVariables collection'en. Request.ServerVariables["LOCAL_ADDR"] giver faktisk det jeg vil have, men jeg ved der må være en anden måde at finde netop den ip.

Er der nogen der kan hjælpe ? Helst med nogle C# eksempler.
Avatar billede jpvj Nybegynder
26. juli 2003 - 12:52 #1
Fra http://www.codeguru.com/cs_network/getip-cs.html

Håber det kan gruges...

JP

using System;
using System.Net;

namespace GetIPCS
{
/// <summary>
/// Gets IP addresses of the local machine
/// </summary>
class classGetIPCS
{
  /// <summary>
  /// Gets IP addresses of the local machine
  /// </summary>
  [STAThread]
  static void Main(string[] args)
  {
  // Get host name
  String strHostName = Dns.GetHostName();
  Console.WriteLine("Host Name: " + strHostName);

  // Find host by name
  IPHostEntry iphostentry = Dns.GetHostByName(strHostName);

  // Enumerate IP addresses
  int nIP = 0;
  foreach(IPAddress ipaddress in iphostentry.AddressList)
  {
    Console.WriteLine("IP #" + ++nIP + ": " +
                      ipaddress.ToString());
  }
  }
}
}
Avatar billede skg Nybegynder
26. juli 2003 - 13:07 #2
den løsning giver jo så alle IP'er som min server har; også dem der ikke bliver brugt af webserveren.
Avatar billede _just4fun_ Nybegynder
26. juli 2003 - 14:20 #3
Den der har lavet requesten, har requestet f.eks. "http://www.ahost.com/myaspx.aspx"
www.ahost.com findes som host i servervariablerne, og jeg går ud fra at det er den du vil have IPNummeret på.

Så du bruger bare
strHostName = this.Request.ServerVariables("SERVER_NAME")
oppe i jpvj-s posting, så burde det spille.
Avatar billede skg Nybegynder
26. juli 2003 - 19:05 #4
_just4fun_ : String strHostName = Dns.GetHostName();

giver jo netop det du hiver ud fra ServerVariables NameValueCollection'en. Formålet var jo netop at undgå at bruge denne collection.

Den bruger der laver request'et kan man finde IP på, da den ligger som en property på request'et, men serveren der svarer's IP kan man så kun hive ud fra Request.ServerVariables["LOCAL_ADDR"], men jeg vil meget gerne prøve at undgå dette.
Avatar billede jpvj Nybegynder
28. juli 2003 - 11:54 #5
Du vil have en aspx (dvs en fortolket .NET side) til at læse på serveren hvilket IP nummer den er bundet på...

Hvordan havde du forestillet dig det hvis det ikke skulle være gennem server variablerne?

Hvorfor vil du gerne undgå dem?
Avatar billede skg Nybegynder
29. juli 2003 - 01:05 #6
der findes en property der angiver hvilken IP Request'et kommet fra, men ikke en tilsvarende der siger hvor Response'et kommer fra.

Det var det jeg i første omgang var lidt i tvivl om. Den anden ting var mere at det da måtte være muligt, uden at skulle bruge den NameValueCollection.
Avatar billede _just4fun_ Nybegynder
29. juli 2003 - 10:54 #7
Men, du er jo i en web-context. Den context indeholder informationer om det request der er blevet lavet imod serveren, og det er dem du finder i din namevaluecollection.

Og hvilket ipnummer kommer svaret så fra til klienten: Det kommer fra IPnummeret hvor hostnavnet er lagt på, så hvis en eller anden requester www.google.com, så kan serveren selv se: aAAAaaa, der er nogen der har requestet www.google.com , og det IPNummer kan slås op!!! www.google.com ligger i webcontexten, så det er der du skal finde den.

Men som jpvj skriver: hvorfor vil du undgå dem?
Avatar billede skg Nybegynder
29. juli 2003 - 23:52 #8
hvorfor vil du undgå dem : Som jeg skrev tidligere "Det var det jeg i første omgang var lidt i tvivl om. Den anden ting var mere at det da måtte være muligt, uden at skulle bruge den NameValueCollection."


Jeg synes det var lidt underligt at der ikke var en tilsvarende property. Jeg skal bruge IP'en da websitet jeg arbejder på kommer til at ligge på flere servere, og jeg skulle gerne kunne bruge denne IP til en masse ting - det vil også være hurtigere at hente den ud fra en "statisk" property hvis det er muligt.
Avatar billede nielslbeck Nybegynder
01. august 2003 - 13:32 #9
Det er ikke muligt at hente IP'en ud fra en property - det gøres fra ServerVariables. Hvis det er pga performance du hellere ville ha' hentet IP'en fra en property, tror jeg ikke du skal frygte det helt vildt. Du kan jo evt også hente IP'en ind via en "global klasse", hvori du så har en property der giver IP'en.
Avatar billede skg Nybegynder
03. august 2003 - 12:20 #10
det er åbenbart ikke muligt at gøre det som jeg havde i tankerne i første omgang, så den ServerVaribles collection får stadig lov at leve.

Efter at have undersøgt det hele lidt mere, er det pga. at den variabler jeg søger bliver serveret af den server der håndterer Request'et, derfor kan man så kun hive informationen ud den vej. Hvad jeg dog undrede mig over fra starten, var at flere af de samme variabler der findes i den collection, var at finde som properties, både på Request'et, mens også på Response'et.

Jeg må vel bare finde mig i det :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester