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回傳
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(); } }