Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


&-operatorn för att jämföra om ip-adresser är i samma subnät.

Postades av 2004-09-08 17:09:56 - Johan Knotsson, i forum c++, Tråden har 5 Kommentarer och lästs av 835 personer

Hej mitt dilemma är följande, jag vill skapa en funktion som tar emot två ipadresser samt en subnätmask och sedan jämför ipadresserna mot subnätmasken för att se om de är i samma subnät.

Problemet är att programmet inte fungerar som det borde göra.
Jag får endast svar om att ip-adresserna är i olika subnät. Enda gången svaret är att de är i samma subnät är om de är exakt samma ip-adresser.

C++ koden:

#include <iostream.h>
#include <conio.h>

bool subnetCheck(unsigned IP_ADDRESS_1, unsigned IP_ADDRESS_2, unsigned SUBNET_MASK);

void main(void){

bool svar=subnetCheck(010000100007,010000101007,255255254000);
cout << svar << endl;

if (svar==1)
cout << "IP-adresserna \204r i samma subn\204t" << flush;
else
cout << "IP-adresserna \204r inte i samma subn\204t" << flush;

getche();
}

bool subnetCheck(const unsigned int IP_ADDRESS_1, const unsigned int IP_ADDRESS_2, const unsigned int SUBNET_MASK){

if ((IP_ADDRESS_1 & SUBNET_MASK) == (IP_ADDRESS_2 & SUBNET_MASK)) //BITvis and jämförelse
return true;
else
return false;
}


Svara

Sv: &-operatorn för att jämföra om ip-adresser är i samma subnät.

Postades av 2004-09-08 17:32:44 - Per Persson

<b>bool svar=subnetCheck(010000100007,010000101007,255255254000);</b>

Om funktionen skall fungera får du se till att göra korrekta översättningar av IP-adresserna till heltal:
10.0.100.7 --> 10 * pow(256, 3) + 0 * pow(256, 2) + 100 * pow(256, 1) + 7 * pow(256, 0) = 167797767
255.255.254.0 --> 4294966784


Svara

Sv: &-operatorn för att jämföra om ip-adresser är i samma subnät.

Postades av 2004-09-09 11:00:44 - Johan Knotsson

.


Svara

Sv: &-operatorn för att jämföra om ip-adresser är i samma subnät.

Postades av 2004-09-09 12:05:13 - Per Persson

Vad vill du säga med det?


Svara

Sv: &-operatorn för att jämföra om ip-adresser är i samma subnät.

Postades av 2004-09-09 16:17:58 - Johan Knotsson

Blev lite fel där.

Hur som helst så fungerar applikationen utmärkt med din hjälp. Tackar.

Kom fram till att man förmodligen kan använda operatorn << för att översätta ipadressen?

Koden (fungerar):

#include <iostream.h>
#include <conio.h>
#include <math.h>

bool subnetCheck(unsigned IP_ADDRESS_1, unsigned IP_ADDRESS_2, unsigned SUBNET_MASK);

void main(void){

int IP_ADDRESS_1 = 10 * pow(256, 3) + 0 * pow(256, 2) + 100 * pow(256, 1) + 7 * pow(256, 0);
int IP_ADDRESS_2 = 10 * pow(256, 3) + 0 * pow(256, 2) + 101 * pow(256, 1) + 7 * pow(256, 0);
int SUBNET_MASK = 255 * pow(256, 3) + 255 * pow(256, 2) + 255 * pow(256, 1) + 0 * pow(256, 0);

bool svar=subnetCheck(IP_ADDRESS_1,IP_ADDRESS_2,SUBNET_MASK);
cout << svar << endl;

if (svar)
cout << "IP-adresserna \204r i samma subn\204t" << flush;
else
cout << "IP-adresserna \204r inte i samma subn\204t" << flush;

getche();
}

bool subnetCheck(const unsigned int IP_ADDRESS_1, const unsigned int IP_ADDRESS_2, const unsigned int SUBNET_MASK){

if ((IP_ADDRESS_1 & SUBNET_MASK) == (IP_ADDRESS_2 & SUBNET_MASK)) //BITvis and jämförelse
return true;
else
return false;
}


Svara

Sv: &-operatorn för att jämföra om ip-adresser är i samma subnät.

Postades av 2004-09-09 16:28:02 - Per Persson

<b>Kom fram till att man förmodligen kan använda operatorn << för att översätta ipadressen?</b>

Ja,
int IP_ADDRESS_1 = 10 * pow(256, 3) + 0 * pow(256, 2) + 100 * pow(256, 1) + 7 * pow(256, 0);
kan ersättas med
int IP_ADDRESS_1 = (10 << 24) | (0 << 16) | (100 << 8) | 7;


Svara

Nyligen

  • 14:24 CBD regelbundet?
  • 14:23 CBD regelbundet?
  • 14:22 Har du märkt några verkliga fördel
  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 616
27 953
271 709
5 820
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies