ActiveX: SLPing      (Filnamn: SLPING.OCX)

SLPing är en ActiveX-komponent som kan användas för att testa om en dator vid ett specificerat IP-nummer eller domännamn existerar. Kontrollen mäter också tiden det tar att skicka ut en förfrågan och ett erhålla ett svar. Tiden erhålls i millisekunder. SLPing använder protokollet ICMP (Internet Control Message Protocol) när den utför en ping-operation. Storleken på datapaketet som skickas under ping-operationen är 32 bytes.


Egenskaper

Namn Datatyp Beskrivning
HostNotFound BOOL Sätts till TRUE om ett IP-nummer eller domännamn inte kan hittas. Denna egenskap kan endast läsas.
.
ResponseTime long Efter att metoden Ping anropats innehåller denna egenskap svarstiden i millisekunder. Denna egenskap kan endast läsas.
.
Timeout long Specificerar tiden i sekunder som kontrollen ska vänta på ett svar innan den avbryter.
.
TimeoutOccurred BOOL Sätts till TRUE om timeout inträffade vid senaste anrop av metoden Ping. Denna egenskap kan endast läsas.
.



Metoder 


BOOL Ping(LPCTSTR Address);

Utför en ping-test på ett IP-nummer eller domännamn som specificeras av parametern Address. Existerar adressen och inga fel inträffat returnerar funktionen TRUE. Tiden i millisekunder för ett svar kan läsas från egenskapen ResponseTime

Om adressen inte kan hittas, det hinner bli timeout eller ett fel inträffar returnerar funktionen FALSE och metoden GetLastError kan användas för att erhålla en felkod. Om inte addressen existerar sätts även egenskapen HostNotFound till TRUE. Och egenskapen TimeoutOccurred sätts till TRUE om timeout inträffade (dvs inget svar erhölls inom den tidsram som specificerats av egenskapen Timeout).

long GetLastError();

Returnerar senast inträffade felet i kontrollen.
 


Exempel 

char szAddress[256];
char S[256];
long ResponseTime;

GetDlgItemText(IDC_ADDRESS, szAddress, 100);    // Erhåll domännamn eller IP-adress som ska testas

if (m_Ping.Ping(szAddress)) {
    ResponseTime=m_Ping.GetResponseTime();      // Erhåll svarstid från kontrollen
    wsprintf(S,"Svarstid: %d ms",ResponseTime);
    SetDlgItemText(IDC_INFO,S);                 // Skriv ut svarstid
}
else {
    if (m_Ping.GetHostNotFound()) {
    SetDlgItemText(IDC_INFO,"Hittade ej domännamn eller IP-adress!");
    }
    else if (m_Ping.GetTimeout()) {
        SetDlgItemText(IDC_INFO,"Timeout!");
    }
    else {
        long err_number=m_Ping.GetLastError();
        wsprintf(S,"Fel #%d inträffade!",err_number);
        SetDlgItemText(IDC_INFO,S);
    }
}