2017-11-04 2 views
0

Ich versuche, die Telnet-Fähigkeit zu einer benutzerdefinierten IP-Adresse und einem Port in ein Programm hinzuzufügen, an dem ich gerade arbeite. Ich habe das grundlegende Code-Snippet von einer früheren Frage auf der Site bekommen. Das Problem, das ich habe, ist, dass ich kein Textfeld in die Argumente für die tcpClient.Connect-Methode übergeben kann. Wenn ich die IP-Adresse im Feld Parameter hart Code den Code funktioniert, aber wenn ich versuche, eine String-Variable übergeben dann funktioniert die TCPClient.Connect nicht und es zeigt die catch (Ausnahme) MessageBox, dass der Verbindungsversuch fehlgeschlagen.String-Variable an tcpClient.Connect übergeben

Ich schaute auf die MSDN für die tcpClient.Connect-Methode und es gibt an, es benötigt (Zeichenfolge IPaddress, Int32) als Argumente, so dass ich nicht sehen, warum die Übergabe der Zeichenfolge aus einem Textfeld fehlschlägt. Hier

ist das Code-Snippet für diesen Abschnitt des Programms:

   int i = Convert.ToInt32(Port.Text); 
      String strIP = IP.Text; 
      using (TcpClient tcpClient = new TcpClient()) 
      { 
       try 
       { 
        tcpClient.Connect(strIP, i); 
        MessageBox.Show("port Open", "Port Status", MessageBoxButtons.OK); 
       } 
       catch (Exception) 
       { 
        MessageBox.Show("Port Closed", "Port Status", MessageBoxButtons.OK); 
        //Console.WriteLine("Port closed"); 
       } 
      } 
+0

_ "es scheitert unvermeidlich" _ ist in keiner Weise eine nützliche Problemaussage. Bitte korrigieren Sie Ihren Beitrag so, dass er ein gutes [mcve] enthält, das das Problem zuverlässig reproduziert (Hinweis: Wenn ein String-Wert an eine Methode übergeben wird und die Zeichenfolge von der Benutzeroberfläche zurückkommt, dann hat ein guter [mcve] gewonnen brauche nicht nur die UI, sondern nur die Zeichenkette und eine detaillierte Erklärung, was der Code tut, einschließlich des _exact-Textes_ einer Fehlermeldung und des vollständigen Stack-Trace aller Exceptions und was der Code stattdessen tun soll. –

+0

Was ist 'IP.Text' und sind Sie sicher, dass es einen Wert hat, bevor Sie es als Argument zur Verbindungsmethode senden? – CodingYoshi

+0

Möglicherweise lesen Sie aus der falschen Textbox. Schreiben Sie die IP mit Console.Writeline auf den Inhalt. – jdweng

Antwort

0

Das Problem war, dass, wenn ich die IP-Textbox im visuellen Designer an einem gewissen Punkt erstellt ein Leerzeichen wurde in dem Textfeld Eigenschaft eingeführt Rahmen. Ich habe einige Meldungsfelder platziert, um zu sehen, welcher Wert an die Methode übergeben wurde, und nach dem Ausführen im Debugger-Modus und nach einigen Tests mit verschiedenen Werten konnte ich endlich das Leerzeichen am Anfang der String-Variablen sehen, als es übergeben wurde die Methode. Ich ging auf die Eigenschaftenseite des Textfelds und rückschritt im Eigenschaftenfeld, um sicherzustellen, dass keine Leerzeichen vorhanden waren. Nachdem ich dies getan hatte, konnte ich den Wert IP.text erfolgreich an die strIP-Variable übergeben und die Methode tcpClient.Connect aufrufen, um eine Verbindung zu der IP und dem Port herzustellen, an den ich sie übergeben habe.