Det jeg har brug for er hjælp til at opfange den ip adr der er indtastet samt port nummer. Derefter skal den finde ud af hvilke check boxe der er aktiveret, og forespørge ud mod porten om den er lukket eller åben, og vise en checkbox med resultatet.
Well det første er ganske simpelt... men det ville være lidt håbløst at begynde at gemme det i en variabel før du benytter det, da du allerede har det i txtboxene...
men nu viser jeg lige hvordan du gemmer det i en variabel, så har du nok en ide om hvordan du benytter den uden at gemme den først.
String ip = txtip.Text; String port = txport.Text; String TcpUdp;
If (chktcp = true) { String TcpUdp = "Tcp"; } If (chkudp = true) { String TcpUdp = "Udp"; }
Men hvordan du vil checke op på om den er åben ved jeg ikke... der er flere muligheder, men det kræver jo lidt du har noget du kan "skyde mod"... Du kan jo vælge at bruge cmd'en til det (fra din app så det ikke kan ses self.)
Dette kan evt gøres noget lignende følgende: (Noget kode jeg skrev en gang)
string a = txt_IP.Text; string b = txt_User.Text; string c = txt_Password.Text; string Command = "cd "+_iniReader.Pstools+" && p: && psservice "+@"\\"+a+" " + " -u " + b + " -p " + c + " restart PCC"; Process p = new Process(); try { p.StartInfo = new ProcessStartInfo("cmd", "/c \"" + Command + "") {
jamen: 1. Du skal have noget du kan checke op imod... (Router, server, pc) et eller andet. som du ønsker at tilgå på porten. (Har du det?) 2. brug //bygger din kommando String command = "telnet "+txtboxip.Text+" "+txtboxport.Text //string til at holde om det virkede eller ej //kan også være en boolean String Virkerder;
Process p = new Process(); try { //Starter cmd'en og affyre din kommando p.StartInfo = new ProcessStartInfo("cmd", "/c \"" + Command + "") {
RedirectStandardOutput = true,
UseShellExecute = false,
CreateNoWindow = true
};
p.Start(); MessageBox.Show(Command); //viser hvilken kommando der bliver fyret af
string output = p.StandardOutput.ReadToEnd(); p.WaitForExit(); if (output.Contains("Der kunne ikke oprettes forbindelse")) { Virkerdet = "nej" } else { Virkerdet = "ja" }
Noget i den stil... Ved dog ikke om jeg ville bruge telnet til at checke om porten var åben... og i såfald ved jeg burde du: 1. lave det i en seperat tråd. 2. huske at lukke tråden.
try { Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); sock.Connect(ipa, portno); if (sock.Connected == true) // Porten er åben MessageBox.Show("Port is Open"); sock.Close();
} catch (SocketException ex) { if (ex.ErrorCode == 10061) // Porten ikke i brug MessageBox.Show("Port is Closed!"); else MessageBox.Show(ex.Message); }
så kan du self. blot ændre ProtoclType til Udp hvis du vil checke via UDP
Ja, giver dig ret i at cmd'en nok ikke ligefrem er det smarteste at bruge, men nu har jeg kun rodet lidt med cocket programmering.. (lavede en lille chat client en gang). Og gad ikke lige til at slå det op igen ;)...
Men helt klart, socket ville være langt bedre, da du slipept for at hive 3 parts app's ind...
PS. Telnet klienten er installeret på alle nørders win 7 ;)! Er da det første man gør når man får den kørt op.
PPS. håber du har fået noget ud af det balousen, ellers må du jo bare spørge løs, hvis du savner nogle forklaringer.
forstår ikke helt hvad du mener, martinbk's kode er jo lige til at sætte ind i dit program. du skal bare lige skifte nogle af tingene ud, så den laver check på om det er TCP eller UDP osv. og hvilken port... det laver du jo bare i nogle variabler du bruger i hans kode.
Synes godt om
Ny brugerNybegynder
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.