Avatar billede the_fox Nybegynder
19. marts 2008 - 11:29 Der er 10 kommentarer og
1 løsning

Problemer med Timer og Tcp.Connect()

Hej Eksperter,

Jeg har følgende eksempel, som IKKE "looper" og det skyldes tilsyneladende TcpScan.Connect("111.111.111.111", 1000);

public MainForm()
        {
            InitializeComponent();
            System.Threading.Timer t = new System.Threading.Timer(new TimerCallback(Scan), null, 0, 10000);
        }

    public void Scan(object o) {

            TcpClient TcpScan = new TcpClient();
            try
            {
                TcpScan.Connect("111.111.111.111", 1000);
                this.richTextBox1.Text += "OK";           
            }
            catch
            {
                this.richTextBox1.Text += "Fejl";           
            }
            con.Close();
            MessageBox.Show(DateTime.Now.ToLocalTime());

        }

Programmet skal bruges til at tjekke om en remote PC er tændt.
Loopet virker fint hvis jeg bare udskriver en MessageBox i stedet for TcpScan.Connect();

Har I et godt forslag til en løsning?

Mvh Ole
Avatar billede kalp Novice
19. marts 2008 - 11:52 #1
TcpClient TcpScan = new TcpClient();
TcpScan.SendTimeout = 10000;

så burde den i hvertfald ikke hænge..
men ellers skal din IP/maskinnavn og Port vel stemme og din app skal ikke ligge i My Documents/Visual Studio mappen.. der er problemer med sikkerhed;)
Avatar billede the_fox Nybegynder
19. marts 2008 - 12:28 #2
Hmm... det ændrer faktisk ikke en hel masse på resultatet, at tilføje timeout.
IP og port er fiktiv i dette eksempel, så der ikke er nogen som får gode ideér. :)

Har du andre gode forslag?
Jeg har også prøvet med TcpScan.Close();
Avatar billede kalp Novice
19. marts 2008 - 12:31 #3
ja jeg ved godt de er fiktive, men når du indtaster de korrekte så skal de stadig være gyldige;o)

men du har heller ikke gjort det nemt for dig selv..
for det første kan du debugge dig igennem det kode der og se hvad der egentlig sker.

for det andet så skal du nok udskrive fejlen, som så måske kan give mere mening:)

catch(Exception error)
            {
                this.richTextBox1.Text += error.Message;
            }
Avatar billede the_fox Nybegynder
19. marts 2008 - 12:49 #4
Hehe ok! Jeg skal jo nok ikke tage for givet, at du kan se mit output. Doh. Beklager!

Problemet er at den ikke smider en exception. Den compiler fint uden fejl og applikationen connecter fint første gang, men derefter hænger den bare. Applikationen fryser ikke, men den forsætter heller ikke loopen.
Avatar billede kalp Novice
19. marts 2008 - 14:09 #5
try{
  using(TcpClient TcpScan = new TcpClient("111.111.111.111", 1000)){
    this.richTextBox1.Text += "OK";           
  }
}
catch{
  this.richTextBox1.Text += "Fejl";           
}


prøv lige sådan.. eller lav en finally i din kode..

  catch{
      this.richTextBox1.Text += "Fejl";           
  }
  finally{
      con.Close();
  }
Avatar billede the_fox Nybegynder
19. marts 2008 - 14:53 #6
Hej igen,

Jeg har prøvet begge dele, men uden ændring :(
Avatar billede kalp Novice
19. marts 2008 - 20:38 #7
hvad sker der når du debugger?
Avatar billede the_fox Nybegynder
25. marts 2008 - 10:20 #8
Så er påsken overstået og vi prøver igen :)

Jeg bruger SharpDevelop og når jeg vælger "debug"->"run" får jeg følgende resultat:
------ Build started: Project: Portscanner Configuration: Debug ------
Performing main compilation...

Build complete -- 0 errors, 0 warnings

Kan jeg debugge på andre måder? Så jeg får lidt mere info om hvad der sker i baggrunden?
Avatar billede kalp Novice
25. marts 2008 - 21:06 #9
du kan vel sætte breakpoints i koden så den stopper når den når der til?
mere så du kan se hvor den hænger.

prøv evt. også at smide en try catch rundt om din TcpClient for at se om den laver en exception
Avatar billede the_fox Nybegynder
19. juli 2008 - 21:28 #10
Hej Kalp,

Jeg havde sgu helt glemt dette spm. Beklager! Jeg fandt en færdig løsning på nettet i stedet. Smid et svar hvis du vil have points.
Tak for hjælpen.
Avatar billede the_fox Nybegynder
05. november 2008 - 16:27 #11
Nå, men jeg går ud fra at du ikke vil have 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
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