Exemple #1
0
 /// <summary>
 /// 全てのクライアントとの接続を閉じる。
 /// </summary>
 public override void CloseAllClients()
 {
     // すべてのクライアントを閉じる
     lock (((System.Collections.ICollection)_AcceptedClients).SyncRoot)
     {
         // foreachは途中で要素数が変わるとうまく動かないので、使わないようにする
         for (int i = (_AcceptedClients.Count - 1); i >= 0; --i)
         {
             BaseCommunication client = _AcceptedClients[i];
             CloseClient(client);
         }
     }
 }
Exemple #2
0
 /// <summary>
 /// 全てのクライアントにデータを送信する。
 /// </summary>
 /// <param name="data">書き込むバッファ。</param>
 /// <param name="offset">書き込むバッファのオフセット。</param>
 /// <param name="size">書き込むバッファの長さ。</param>
 public override void SendToAllClients(byte[] data, int offset, int size)
 {
     // すべてのクライアントに送信
     lock (((System.Collections.ICollection)_AcceptedClients).SyncRoot)
     {
         // foreachは途中で要素数が変わるとうまく動かないので、使わないようにする
         for (int i = (_AcceptedClients.Count - 1); i >= 0; --i)
         {
             BaseCommunication client = _AcceptedClients[i];
             client.Write(data, offset, size);
         }
     }
 }
Exemple #3
0
        /// <summary>
        /// 指定したクライアントとの接続を閉じる。
        /// </summary>
        /// <param name="client">接続を閉じたいクライアント。</param>
        public override void CloseClient(BaseCommunication client)
        {
            // 切断済みなら飛ばす
            if (!client.IsConnect)
            {
                return;
            }

            // リストから取り除く
            _AcceptedClients.Remove(client);
            // イベントハンドラを外す
            client.Disconnecting -= Client_Disconnecting;
            client.DataReceived  -= Client_DataReceived;
            client.ErrorOccurred -= Client_ErrorOccurred;
            // 処分
            client.Disconnect();
            client.Dispose();
        }
 /// <summary>
 /// 指定したクライアントとの接続を閉じる。
 /// </summary>
 /// <param name="client">クライアント。</param>
 public abstract void CloseClient(BaseCommunication client);
 /// <summary>
 /// DataReceivedEventArgs クラスのコンストラクタ。
 /// </summary>
 /// <param name="communication">データ受信元との通信。</param>
 public DataReceivedEventArgs(BaseCommunication communication)
 {
     Communication = communication;
 }
 /// <summary>
 /// CommunicationEventArgs クラスのコンストラクタ。
 /// </summary>
 /// <param name="communication">関係する通信。</param>
 public CommunicationEventArgs(BaseCommunication communication)
 {
     Communication = communication;
 }
 /// <summary>
 /// CommunicationErrorEventArgs クラスのコンストラクタ。
 /// </summary>
 /// <param name="communication">エラー発生した通信。</param>
 /// <param name="exception">発生した例外。</param>
 public CommunicationErrorEventArgs(BaseCommunication communication, Exception exception)
 {
     Communication = communication;
     Exception     = exception;
 }