Ejemplo n.º 1
0
 /*-------------------------------------------------------------------------
  * クライアントに送信
  * ---------------------------------------------------------------------------*/
 public void Send(tcp_client_base client, string str)
 {
     if (client == null)
     {
         return;
     }
     lock (m_sync_socket){
         client.Send(str);
     }
 }
Ejemplo n.º 2
0
        /*-------------------------------------------------------------------------
         * BeginAcceptのコールバック
         * ---------------------------------------------------------------------------*/
        private void accept_callback(IAsyncResult ar)
        {
            //接続要求を受け入れる
            Socket soc = null;

            try{
                lock (m_sync_socket){
                    soc = m_server.EndAccept(ar);
                }
            }catch {
                this.Close();
                return;
            }

            // tcp_client_baseの作成
            tcp_client_base client = this.CreateClient(soc);

            // 最大数を超えていないか
            if (m_client_list.Count >= m_max_client)
            {
                client.Close();
            }
            else
            {
                // コレクションに追加
                lock (m_sync_socket){
                    m_client_list.Add(client);
                }

                // イベントハンドラの追加
                client.Disconnected += new EventHandler(client_disconnected);
                client.ReceivedData += new ReceivedDataEventHandler(client_received_data);
                // イベントを発生
                OnAcceptedClient(new ServerEventArgs(client));

                // データ受信開始
                if (!client.is_closed)
                {
                    client.StartReceive();
                }
            }

            // 接続要求施行を再開する
            m_server.BeginAccept(new AsyncCallback(accept_callback), null);
        }
Ejemplo n.º 3
0
 /*-------------------------------------------------------------------------
  *
  * ---------------------------------------------------------------------------*/
 public ReceivedDataEventArgs(tcp_client_base c, string str)
 {
     m_client          = c;
     m_received_string = str;
 }
Ejemplo n.º 4
0
 /*-------------------------------------------------------------------------
  *
  * ---------------------------------------------------------------------------*/
 public ServerEventArgs(tcp_client_base c)
 {
     m_client = c;
 }