Avatar billede bigo Nybegynder
02. september 2003 - 15:40 Der er 12 kommentarer og
2 løsninger

Beregn Gateway / Netmaske / Net udfra f.eks. 192.168.1.23/24

Hejsa.

<subj> har jeg brug for men kan ikke selv lige regne den ud..

er der en der har en funktion i javascript + evt. html som jeg kan "låne"

-- Bigo
Avatar billede minijensen1 Nybegynder
02. september 2003 - 15:42 #1
Tror ikke at det er noget du kan få hevet ud fra JavaScript, medmindre at du kan få lov til at udføre en kommando hos brugeren (ipconfig /all) - og det skal du have tilladelse til af den besøgende.
Avatar billede bigo Nybegynder
02. september 2003 - 15:44 #2
narj da.. jeg har jo en html form hvor der er et input felt = f.eks.

<input type=text name=ipadresse>
og når der er tastet noget ind og man forlader boxen skal den beregne gateway osv og skrive det i

<input type=text name=ipgateway>
<input type=text name=ipnet>
Avatar billede squashguy Nybegynder
02. september 2003 - 16:27 #3
du kan beregne en "default" gateway, som f.eks. den første eller sidste ip på subnettet... men en gateway kan sidde på en hvilken som helst ip-
Avatar billede nmh Nybegynder
02. september 2003 - 16:28 #4
Man kan ikke beregne gateway og netmaske ud fra en IP-adresse.
Avatar billede squashguy Nybegynder
02. september 2003 - 16:39 #5
han har angivet netmasken som /24 (255.255.255.0)
Avatar billede squashguy Nybegynder
02. september 2003 - 16:43 #6
men ellers er det korrekt, hvad nmh siger. hvis du kun angiver en ip, kommer du ikke langt
Avatar billede bigo Nybegynder
02. september 2003 - 21:01 #7
ok.. det er desværre rigtigt det i siger.. øv.. min fejl.

eksempel:

192.168.1.23/24

så er min subnet = 255.255.255.0
mit netværk = 192.168.1.0
min gateway (+1) = 192.168.1.1

kan man gøre det i et fixt lille squipt...??
Avatar billede bigo Nybegynder
03. september 2003 - 08:14 #8
oder..
Avatar billede roenving Novice
03. september 2003 - 14:13 #9
Her har jeg brugt / til at betegne at subnet-mask er den sidste, så den kan den ikke udfylde uden skråstregen

-- desuden bør man jo checke de mest oplagte tavetosser, så den er ikke helt kort ...

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Beregn Gateway / Netmaske / Net udfra f.eks. 192.168.1.23/24</title>
<meta name="keywords" content="http://www.eksperten.dk/spm/395900">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script type="text/javascript">
function stdgateway(f){
    n = f.value.split(".");
    if(n.length!=4){
        alert('Fejl i IP-adresse');
        return false;
    }
    frm = f.form;
    idx = n[3].indexOf("/");
    if(idx > -1){
      n[4] = n[3].substring(idx+1);
      n[3] = n[3].substring(0,idx);
    }
    for(i=0;n.length>i;i++){
        if(1>n[i]||n[i]>254){
            alert('Fejl i IP-adresse');
            return false;
        }
    }
    if(idx>-1)frm.mitSubnet.value = "255.255.255.0";
    fval = f.value.substring(0,f.value.lastIndexOf(".")+1);
    frm.mitNet.value = fval+"0";
    frm.minGateway.value = fval+"1";
}
</script>
</head>
<body>
<br>
<form id="minForm" name="minForm" onsubmit="stdgateway(this.minIp)">
<input id="minIp" name="minIp" type="text" value="" size="20" onchange="stdgateway(this)">
<br>
<input id="mitSubnet" name="mitSubnet" type="text" value="" size="20">
<br>
<input id="mitNet" name="mitNet" type="text" value="" size="20">
<br>
<input id="minGateway" name="minGateway" type="text" value="" size="20">
</form>
</body>
</html>

hth
jes '-)
Avatar billede bigo Nybegynder
03. september 2003 - 20:35 #10
Smader godt forsøg. Men jeg var lidt ude efter at den beregnede subnettet osv.

ser du:

/24 = 255.255.255.0 og gateway er normalt net+1
/25 = 255.255.255.128 og gateway er normalt 128+1
/26 = 255.255.255.192 og gateway er normalt .. tja 65, 129 eller 193..

tror faktisk jeg har stjålet et eks. i php som gør det.. kigger lige..

måske vil du hjælpe mig at konvertere det - hvis jeg har det - til javascript..
Avatar billede bigo Nybegynder
03. september 2003 - 20:39 #11
<stolencode>

function CalcNetwork($IPaddress, $Subnetmask)
{
  $IPaddress_Octets  = explode(".", $IPaddress);
  $Subnetmask_Octets = explode(".", $Subnetmask);
  $Ting_Octets      = array();

  for ($A = 0; $A <= 3; $A++)
    $Ting_Octets[$A] = (int) $IPaddress_Octets[$A] & (int) $Subnetmask_Octets[$A];

  $Ting_Octets[3];

  return implode(".", $Ting_Octets);
}

function CalcDefaultGateway($IPaddress, $Subnetmask)
{
  $IPaddress_Octets  = explode(".", $IPaddress);
  $Subnetmask_Octets = explode(".", $Subnetmask);
  $Ting_Octets      = array();

  for ($A = 0; $A <= 3; $A++)
    $Ting_Octets[$A] = (int) $IPaddress_Octets[$A] & (int) $Subnetmask_Octets[$A];

  $Ting_Octets[3]++;

  return implode(".", $Ting_Octets);
}


// ---------- Internet IPadresser -------------
// Fjern /xxx
list($internet_cid, $Dummy) = explode("/", $internet_net);

// Saet ipadresse
ereg("^(.*)\.(.*)$", $internet_net, $Regs);
$internet_ip = "$Regs[1]." . ($Regs[2] +0);

// Saet IP_Net subnetmask
// Saet slashnotation (/30)
ereg("^(.*)(/.*)$", $internet_net, $Regs);
list($internet_net, $SlashDims) = array($Regs[1], $Regs[2]);

$Bits = substr($SlashDims, 1);
$Bitmask = str_repeat("1", $Bits) . str_repeat("0", 32 - $Bits);

$Octets = array(
  bindec(substr($Bitmask, 0, 8)),
  bindec(substr($Bitmask, 8, 8)),
  bindec(substr($Bitmask, 16, 8)),
  bindec(substr($Bitmask, 24, 8))
);

$internet_cid = implode(".", $Octets);
$internet_gw = CalcDefaultGateway($internet_net, $internet_cid);
$internet_network = CalcNetwork($internet_net, $internet_cid);


</stolencode>
Avatar billede squashguy Nybegynder
04. september 2003 - 03:26 #12
klokken er mange og det gik stærkt, så der might be some bugs

<script>

function beregn(){
    frm = document.forms("net");

    str = frm.ipnet.value;
    pos = str.indexOf("/");

    ip = str.substr(0, pos);
    ip_octets = ip.split(".");

    nbit = +str.substr(pos+1);
   
    netmask = "";

    for(i=a=0; i<=32; i++){
        if(!(i%8) && i){
            netmask += (i < 32) ? a+"." : a;
            a = 0;
        }
        if(i<nbit) a += Math.pow(2, 7-(i%8));
    }

    netmask_octets = netmask.split(".");
    network_octets = new Array();

    for(i=0; i<4; i++){
        network_octets[i] = ip_octets[i] & netmask_octets[i];
    }

    network =  network_octets.join(".");

    network_octets[3]++;
    gateway =  network_octets.join(".");

    frm.subnet.value = network;
    frm.netmask.value = netmask;
    frm.gateway.value = gateway;
}
</script>

<form name="net">
ip/net<input name="ipnet" value="192.168.1.30/24" type="text"><br>
subnet<input name="subnet" type="text"><br>
netmask<input name="netmask" type="text"><br>
gateway<input name="gateway" type="text"><br>
<input type="button" value="Beregn" onclick="beregn()">
</form>
Avatar billede bigo Nybegynder
04. september 2003 - 08:36 #13
Takker og bukker.. det var sgu lige hvad jeg skulle bruge.

points fordelt til begge for udvist iver ;-)
Avatar billede roenving Novice
05. september 2003 - 06:08 #14
-- takker for points ;~}
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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