예제 #1
0
        private void Recetor(byte[] B, int inLen)
        {
            string Msg = Encoding.Default.GetString(B, 0, inLen); //解讀完整訊息
            string St  = Msg.Substring(0, 1);                     //取出命令碼 (第一個字)
            string Str = Msg.Substring(1);                        //取出命令碼之後的訊息

            switch (St)                                           //依命令碼執行功能
            {
            case "L":                                             //接收線上名單
                listBox1.Items.Clear();
                string[] M = Str.Split(',');                      //拆解名單成陣列
                for (int i = 0; i < M.Length; i++)
                {
                    listBox1.Items.Add(M[i]);
                }     //逐一加入名單
                break;

            case "9":     //接收離開玩家
                TxtSever.AppendText("(系統) :" + Str + " 已離開伺服器! \r\n");
                listBox1.Items.Remove(Str);
                break;

            case "3": TxtSever.AppendText("(私密)" + Str + "\r\n"); break; //私密訊息

            case "D": TxtSever.AppendText("(公開)" + Str + "\r\n"); break; //聊天室

            case "M": TxtPort.AppendText(Str + "\r\n"); break;           //猜題未答對
            }
        } //接收ServerC回傳
예제 #2
0
 private void Connect(string IP, string Port, string Name)
 {
     Control.CheckForIllegalCrossThreadCalls = false; //忽略跨執行緒操作的錯誤
     try
     {
         IPEndPoint EP = new IPEndPoint(IPAddress.Parse(IP), int.Parse(Port));//建立伺服器端點資訊
         T = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
         T.Connect(EP);
         Th = new Thread(Listen)
         {
             IsBackground = true
         };
         Th.Start();//開始監聽
         TxtSever.AppendText("(系統) : 已連線伺服器! \r\n");
         Send("L" + Name);
     }
     catch
     {
         TxtSever.AppendText("(系統) : " + Name + " 無法連上伺服器! \r\n");
         this.Close();
     }
 }