예제 #1
0
        /// <summary>サーバ起動 - listenerスレッド関数</summary>
        private void ListeningTCP()
        {
            // スレッドID
            int managedThreadId = Thread.CurrentThread.ManagedThreadId;

            try
            {
                // 本サンプルでは、Loopbackの9999ポートをListening
                this.Listener = new TcpListener(new IPEndPoint(IPAddress.Loopback, 9999));

                // Listening開始
                this.Listener.Start();

                // Listening開始を表示
                this.SetResult_Svr(
                    string.Format(
                        "Listening開始! - ThreadId:{0}", managedThreadId));

                // 終了させるまで延々と読み続ける。

                while (!this.End)
                {
                    TcpClient tcpClient = this.Listener.AcceptTcpClient(); //(待機)

                    // クライアントは受信待ち時間を設定する。
                    tcpClient.ReceiveTimeout = 3 * 1000;

                    // 得たTCPコネクションを処理する。
                    // TCPコネクションは、TCPCnnHndrで処理。
                    TCPCnnHndr tcpCnnHndr = new TCPCnnHndr();
                    tcpCnnHndr.TCPCnn = tcpClient;
                    //tcpCnnHndr.TCP_Window = this;
                    tcpCnnHndr.SetResult_Svr = new CmnClass.SetResultDelegate(this.SetResult_Svr);

                    // ※ 必要であれば、\Asynchronousのサンプルを参照して
                    //    起動数制御、ThreadPool化、キューイング数の制御を追加しても良い。

                    // Threadを生成してThread関数(tcpCnnHndr.invoke)を実行
                    Thread th = new Thread(new ThreadStart(tcpCnnHndr.invoke));
                    th.Start();
                }
            }
            catch (Exception ex)
            {
                // エラーを表示
                this.SetResult_Svr(
                    string.Format("({0})エラー:{1}", managedThreadId, ex.ToString()));
            }
            finally
            {
                if (this.Listener != null)
                {
                    // Listening停止
                    this.Listener.Stop();
                }
            }

            // Listening停止を表示
            this.SetResult_Svr(
                string.Format(
                    "Listening停止! - ThreadId:{0}", managedThreadId));
        }
예제 #2
0
        /// <summary>サーバ起動 - listenerスレッド関数</summary>
        private void ListeningTCP()
        {
            // スレッドID
            int managedThreadId = Thread.CurrentThread.ManagedThreadId;

            try
            {
                // 本サンプルでは、Loopbackの9999ポートをListening
                this.Listener = new TcpListener(new IPEndPoint(IPAddress.Loopback, 9999));

                // Listening開始
                this.Listener.Start();

                // Listening開始を表示
                this.SetResult_Svr(
                    string.Format(
                        "Listening開始! - ThreadId:{0}", managedThreadId));

                // 終了させるまで延々と読み続ける。

                while (!this.End)
                {
                    TcpClient tcpClient = this.Listener.AcceptTcpClient(); //(待機)

                    // クライアントは受信待ち時間を設定する。
                    tcpClient.ReceiveTimeout = 3 * 1000;

                    // 得たTCPコネクションを処理する。
                    // TCPコネクションは、TCPCnnHndrで処理。
                    TCPCnnHndr tcpCnnHndr = new TCPCnnHndr();
                    tcpCnnHndr.TCPCnn = tcpClient;
                    //tcpCnnHndr.TCP_Window = this;
                    tcpCnnHndr.SetResult_Svr = new CmnClass.SetResultDelegate(this.SetResult_Svr);

                    // ※ 必要であれば、\Asynchronousのサンプルを参照して
                    //    起動数制御、ThreadPool化、キューイング数の制御を追加しても良い。

                    // Threadを生成してThread関数(tcpCnnHndr.invoke)を実行
                    Thread th = new Thread(new ThreadStart(tcpCnnHndr.invoke));
                    th.Start();
                }
            }
            catch (Exception ex)
            {
                // エラーを表示
                this.SetResult_Svr(
                    string.Format("({0})エラー:{1}", managedThreadId, ex.ToString()));
            }
            finally
            {
                if (this.Listener != null)
                {
                    // Listening停止
                    this.Listener.Stop();
                }
            }

            // Listening停止を表示
            this.SetResult_Svr(
                string.Format(
                    "Listening停止! - ThreadId:{0}", managedThreadId));
        }