Exemplo n.º 1
0
 public ChattingClient(IChatClientUI ui)
 {
     this.ui   = ui;
     SendToUI += new dQueueData(this.ui.GetMsg);
     tcpc      = new TcpClient();
     t         = new Thread(Receive);
 }
Exemplo n.º 2
0
 public ClientManager(dQueueData sendToServer)
 {
     list              = new Dictionary <string, Client>();
     nlist             = new Dictionary <string, string>();
     userNotify        = new Dictionary <string, int>();
     que               = new MessageQueue();
     this.SendToServer = sendToServer;
 }
Exemplo n.º 3
0
        // 서버 클래스의 생성자로 IChatServerUI를 상속한다 (IChatServerUI는 ChatUI.cs에 정의되어있다.)
        // IChatServerUI에서 받아온 포트를 이용하여 서버를 생성하게 된다. 아이피는 로컬 아이피를 이용한다.
        public ChattingServer(IChatServerUI ui)
        {
            tcpl           = new TcpListener(IPAddress.Any, ui.Port);
            manager        = new ClientManager(WriteServerChat);
            SendServerMsg += new dQueueData(manager.SendToAll); //서버에서 유저들에게 메세지를 보내기위한 delegate
            SendToUI      += new dQueueData(ui.GetMsg);         //ui에 메세지를 기입하기 위한 delegate
            t              = new Thread(Listen);

            IPHostEntry host = Dns.GetHostEntry(Dns.GetHostName());
            string      msg  = "> " + host.AddressList[0] + ":" + ui.Port;

            SendToUI(new QueueData(ChatCode.StartInfo, msg));
        }
Exemplo n.º 4
0
        //ChatCode를 기준으로 각각의 어플리케이션들이 텍스트박스에 받은 메세지들을 적는 기능을 한다.
        public void GetMsg(QueueData d)
        {
            dQueueData o = null;

            switch (d.code)
            {
            case ChatCode.Sys:                     //시스템 메세지
                o = new dQueueData(WriteSystemMsg);     break;

            case ChatCode.StartInfo:                     //서버가 시작하거나, 클라이언트가 연결할 경우의 작업
                o = new dQueueData(WriteStartInfo); break;

            case ChatCode.UserList:                     //유저가 로그인하거나 로그아웃하였을 경우 유저리스트의 변동을 나타냄
                o = new dQueueData(WriteUserList);      break;

            case ChatCode.LogIn:                     //유저가 로그인하였을 경우 로그인 로그를 받아 적는다.
                o = new dQueueData(WriteLogIn);         break;

            case ChatCode.LogOut:                     //유저가 로그아웃하였을 경우 로그아웃 로그를 받아 적는다.
                o = new dQueueData(WriteLogOut);        break;

            case ChatCode.Msg:                     //서버나 유저가 메세지를 받아 적는다.
                o = new dQueueData(WriteChat);          break;

            case ChatCode.Whisper:                     //귓속말이 왔을 경우 텍스트박스에 메세지를 받아 적는다.
                o = new dQueueData(WriteWhisper);       break;

            case ChatCode.AllMessage:     //전체메세지가 왔을경우 메세지박스를 띄운다.
                o = new dQueueData(WriteAllMessage); break;

            case ChatCode.Kick:     //강제퇴장 당했을 경우 메세지 박스를 띄운다.
                o = new dQueueData(WriteKick); break;

            case ChatCode.Inquiry:     //건의사항을 했을 경우의 기능
                o = new dQueueData(WriteInquiry); break;

            case ChatCode.Notify:     // 신고기능
                o = new dQueueData(WriteNotify); break;
            }

            if (o != null)
            {
                main.Invoke(o, d);
            }
        }