2017-11-04 22 views
0

私は、現在定義しているプログラムにユーザ定義のIPとポートにtelnetする機能を追加しようとしています。私は、サイト上の以前の質問から基本的なコードスニペットを得ました。私が抱えている問題は、tcpClient.Connectメソッドの引数にテキストフィールドを渡すことができないことです。パラメータフィールドにIPアドレスをハードコードするとコードは機能しますが、文字列変数を渡そうとするとtcpClient.Connectは機能せず、接続試行が失敗したというキャッチ(例外)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] UIのみ、文字列のみ)と、エラーメッセージの_exact text_と例外の完全なスタックトレースと、代わりにコードに実行させたいものを含めて、コードが何をするのかについての詳細な説明。 –

+0

'IP.Text'とは何ですか?メソッドに接続するための引数として送信する前に値があることを確認してください。 – CodingYoshi

+0

間違ったテキストボックスから読み取っている可能性があります。非常に内容にConsole.Writelineを使用してIPを書く。 – jdweng

答えて

0

問題は、私はいくつかの点で、ビジュアルデザイナでIPのテキストボックスを作成したときに空白がテキストフィールドのプロパティで導入しまったということでした設定します。メソッドに渡された値とデバッガモードで実行された後の値を確認するメッセージボックスをいくつか入れ、異なる値で数回テストした後に、渡されたときに文字列変数の先頭に空白が表示されるようになりましたメソッド。テキストボックスのプロパティページに行き、プロパティボックスにバックスペースを入れて空白がないことを確認しました。私がこれをした後、IP.text値をstrIP変数に正常に渡して、渡されたIPとポートに接続するtcpClient.Connectメソッドを取得できました。

関連する問題