2017-11-04 124 views
0

我想添加telnet到用户定义的IP和端口到目前正在处理的程序中的能力。我从网站上的前一个问题中得到了基本代码片段。我遇到的问题是我无法将文本字段传递给tcpClient.Connect方法的参数。如果我在参数字段中对IP地址进行硬编码,代码将正常工作,但如果我尝试传递字符串变量,则tcpClient.Connect不起作用,并且它会显示catch(异常)MessageBox,指出连接尝试失败。将字符串变量传递给tcpClient.Connect

我查看了tcpClient.Connect方法的MSDN,它声明它需要(字符串IPaddress,Int32)作为参数,所以我没有看到为什么从文本框传递字符串失败。

下面是该程序的该部分的代码片段:

   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

_“它不可避免地失败”_并不是一个有用的问题陈述。请修复你的帖子,以便它包含一个可靠地重现问题的好的[mcve](提示:如果向方法传递字符串值是问题,并且字符串从UI返回就好,那么一个好的[mcve]赢不需要用户界面,只需要字符串),并详细说明了该代码的功能,包括任何错误消息的_exact text_和任何异常的完整堆栈跟踪,以及您希望代码执行的操作。 –

+0

什么是'IP.Text',你确定在将它作为参数发送给连接方法之前有一个值? – CodingYoshi

+0

您可能正在阅读错误的文本框。使用Console.Writeline将IP写入非常的内容。 – jdweng

回答

0

的问题是,当我创建的可视化设计器的IP文本框在某个点的空白区域得到了在文本字段属性介绍设置。我放了一些消息框,看看传递给Method的值是什么,在调试器模式下运行后,用不同的值测试了几次之后,我终于能够在传递给字符串变量的开始时看到空格方法。我进入了文本框属性页面,并在属性框中退格,以确保没有空格。在我这样做后,我能够成功地将IP.text值传递给strIP变量,并获得tcpClient.Connect方法以连接到我通过它的IP和端口。

相关问题