Avatar billede the_fox Nybegynder
17. maj 2006 - 21:48 Der er 15 kommentarer og
1 løsning

Gemme resultatet fra en ping i .Net 1.0

Hej Eksperter!
Jeg har følgende kode, men kan ikke lige gennemskue hvordan jeg gemmer resultatet fra ping'en i en streng, så jeg kan teste om PC'en er oppe.

ProcessStartInfo NewThread = new ProcessStartInfo(@"ping","192.168.1.3);
Process.Start(NewThread);
Avatar billede arne_v Ekspert
17. maj 2006 - 21:55 #1
Process p = Process.Start(NewThread);
StreamReader sr = p.Standardoutput;
Avatar billede arne_v Ekspert
17. maj 2006 - 21:56 #2
Det er muligt at pinge via Win32 ICMP DLL i .NET 1.x som et alternativ
Avatar billede the_fox Nybegynder
17. maj 2006 - 22:04 #3
Hej Arne og tak for det hurtige svar!

hvad refererer p'et i p.Standardoutput til?
Avatar billede arne_v Ekspert
17. maj 2006 - 22:05 #4
p'et i

Process p =
Avatar billede arne_v Ekspert
17. maj 2006 - 22:05 #5
det er ioevrigt .StandardOutput (stort O)
Avatar billede the_fox Nybegynder
17. maj 2006 - 22:47 #6
Jamen nu virker det jo! Kanon!Men så kommer det næste problem: jeg laver en ny tråd for hver host jeg vil pinge. Hvordan får jeg samlet alle mine ping replys så jeg kan vise dem i min Main class? Jeg skal nok lige tilføje nogle flere points.
Avatar billede arne_v Ekspert
17. maj 2006 - 22:57 #7
du skal have fisket den streng ud af hver traad

hvis du har et objekt som extender Thread kan du lade din Main foerst lave en Join
paa traaden og saa hente strengen ud
Avatar billede the_fox Nybegynder
17. maj 2006 - 23:10 #8
Hvordan vil du lave en extend på tråden? Du må gerne komme med et eksempel :)
Også på hvordan man joiner den oprettede tråd.

jeg opretter tråden sådan her fra main-classen:

public void ping()
{
    String client = "192.168.1.2";
    for(int i=0;i<10;i++)
    {
        MultiPing j = new MultiPing(client);
        Thread backgroundThread = new Thread(new ThreadStart(j.Performjob));
        backgroundThread.Start();
    }
}
Avatar billede arne_v Ekspert
17. maj 2006 - 23:19 #9
jeg kan prove at bixe et eksmepel senere
Avatar billede the_fox Nybegynder
17. maj 2006 - 23:31 #10
kanon!! Jeg smutter også i køjen nu, så det haster ikke... Foreløbig mange tak!
Avatar billede arne_v Ekspert
18. maj 2006 - 01:24 #11
Der var faktisk et par små hovsaer i at få det til at virke !

Men følgende virker (jeg har lavet det lidt anderledes end dig men du kan
se teknikken):

using System;
using System.Diagnostics;
using System.IO;
using System.Threading;

namespace E
{
    public class MainClass
    {
        private const int NHOST = 256;
        public static void Main(string[] args)
        {
            Pinger[] p = new Pinger[NHOST];
            Thread[] t = new Thread[NHOST];
            for(int i = 0; i < NHOST; i++)
            {
                p[i] = new Pinger(i);
                t[i] = new Thread(new ThreadStart(p[i].Run));
                t[i].Start();
            }
            for(int i = 0; i < NHOST; i++)
            {
                t[i].Join();
                Console.WriteLine(p[i].Res);
            }
        }
    }
    public class Pinger
    {
        private int no;
        private string res;
        public Pinger(int no)
        {
            this.no = no;
            res = "";
        }
        public void Run()
        {
            ProcessStartInfo psi = new ProcessStartInfo();
            psi.FileName = "ping";
            psi.Arguments = "192.168.0." + no;
            psi.CreateNoWindow = true;
            psi.UseShellExecute = false;
            psi.RedirectStandardOutput = true;
            Process p = Process.Start(psi);
            StreamReader sr = p.StandardOutput;
            string line;
            while((line = sr.ReadLine()) != null)
            {
                res += line;
            }
            sr.Close();
            p.Close();
        }
        public string Res
        {
            get
            {
                return res;
            }
        }
    }
}
Avatar billede arne_v Ekspert
18. maj 2006 - 01:24 #12
og så skal man ikke pinge .0 og .255 men det er en anden sag
Avatar billede arne_v Ekspert
18. maj 2006 - 01:26 #13
og et svar
Avatar billede the_fox Nybegynder
18. maj 2006 - 10:01 #14
Hmm hvordan pokker tilføjer man flere points? Skal jeg oprette et nyt spørgsmål?
Avatar billede arne_v Ekspert
18. maj 2006 - 13:28 #15
Avatar billede the_fox Nybegynder
20. maj 2006 - 10:00 #16
Så fik jeg endelig tid til at kigge på din kode og det passer jo som fod i hose eller som Hans i Grete, eller hva man nu siger. :) Tak for hjælpen!
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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