-8

以下のコードは Windows フォーム アプリケーションでは正常に動作していますが、コンソールで実行する必要があります。

namespace TelnetApp
{
    public partial class TelnetForm : Form
    {
        public TelnetForm()
        {
            InitializeComponent();
        }

        private Socket clientSocket;

        IPAddress hostAddress;
        public void telnetSocketAsyncEventArgs_Completed(object sender, SocketAsyncEventArgs e)
        {    
            try
            {    
                if (e.SocketError == SocketError.Success)
                {

                    if (e.LastOperation == SocketAsyncOperation.Connect)
                    {    
                        MessageBox.Show("Service Is Running", hostAddress.ToString(),
                            MessageBoxButtons.OK, MessageBoxIcon.Information);    
                    }    
                }    
                else
                {    
                    MessageBox.Show("Service Is not Running", e.SocketError.ToString(),
                       MessageBoxButtons.OK, MessageBoxIcon.Error);

                }    
            }

            catch (SocketException ex)
            {    
                MessageBox.Show(ex.Message, "Service Is not Running",    
                    MessageBoxButtons.OK, MessageBoxIcon.Error);    
            }
        }

        private void TelnetButton_Click(object sender, EventArgs e)
        {
            try
            {
                if (string.IsNullOrEmpty(IPTextBox.Text))
                    return;   
                if (string.IsNullOrEmpty(PortTextBox.Text))    
                    return;
                int port;    
                hostAddress = IPAddress.Parse(IPTextBox.Text);
                int.TryParse(PortTextBox.Text, out port);
                clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                SocketAsyncEventArgs telnetSocketAsyncEventArgs = new SocketAsyncEventArgs();
                telnetSocketAsyncEventArgs.RemoteEndPoint = new IPEndPoint(hostAddress,port);
                telnetSocketAsyncEventArgs.Completed += new
                EventHandler<SocketAsyncEventArgs>(telnetSocketAsyncEventArgs_Completed);
                clientSocket.ConnectAsync(telnetSocketAsyncEventArgs);

            }    
            catch (SocketException ex)
            {    
                MessageBox.Show(ex.Message, "Service Is not Running",    
                    MessageBoxButtons.OK, MessageBoxIcon.Error);

            }    
            finally
            {

            }                   
          }    
       } 
    }
4

2 に答える 2

2

新しいコンソールアプリケーションプロジェクトを作成し、そのプロジェクトにコードをコピーして、ボタンクリックイベントのコードをメインメソッドに配置します。を含めるために、他のメソッドシグネチャを変更する必要がある場合がありますstatic

の呼び出しを削除し、への呼び出しにMessageBox置き換えますConsole.WriteLine。また、ユーザーがデータを入力するためのテキストボックスがないため、コマンドライン引数を解析する必要があります。これは、の配列として入力されるため簡単static void Main(string[] args)です。

次に、デバッガーを起動し、問題がないか確認します。

于 2012-12-10T12:35:18.000 に答える
1

コードをコンソールアプリにコピーし、usingディレクティブへの参照をSystem.Windows.Forms追加using System.Windows.Forms;して、メッセージボックスを保持するために追加するだけです。

メッセージボックスが必要ない場合は、Console.WriteLine代わりに使用してください。

于 2012-12-10T12:40:05.233 に答える