void ListenForRequest() { while (ActiveListener) { string message = networkManager.ReceivePacket(); if (message != "") { Dictionary <string, string> receivedString = networkManager.AnalysisReceiveString(message); if (receivedString["ReceiverIP"] != networkManager.senderInfo.IPAddress || int.Parse(receivedString["ReceiverPort"]) != networkManager.senderInfo.port) { switch (receivedString["Type"].ToUpper()) { case "HOST": if (this.AlHost.IndexOf(receivedString["ReceiverName"]) != 1) { this.AlHost.Add(receivedString["ReceiverName"] + ":" + receivedString["ReceiverIP"] + ":" + receivedString["ReceiverPort"]); } break; } } } } }
void ListenForRequest() { while (ActiveListener) { try { Packet packet; Dictionary <string, string> receivedString; string message = networkManager.ReceivePacket(); networkManager.AnalysisReceiveString(message); message = networkManager.ReceivePacket(); receivedString = networkManager.AnalysisReceiveString(message); if (receivedString["ReceiverIP"] != networkManager.senderInfo.IPAddress || int.Parse(receivedString["ReceiverPort"]) != networkManager.senderInfo.port) { switch (receivedString["Type"].ToUpper()) { case "FINDHOST": packet = new Packet("HOST", ""); networkManager.receiverInfo = new NetworkInfo(receivedString["ReceiverName"], receivedString["ReceiverIP"], int.Parse(receivedString["ReceiverPort"])); networkManager.SendPacket(packet); break; case "JOIN": networkManager.receiverInfo = new NetworkInfo(receivedString["ReceiverName"], receivedString["ReceiverIP"], int.Parse(receivedString["ReceiverPort"])); btnReady.Enabled = true; MessageBox.Show("Người chơi " + receivedString["ReceiverName"] + " đã kết nối"); this.ActiveListener = true; tRec = new Thread(new ThreadStart(ListenForRequest)); tRec.IsBackground = true; tRec.Start(); break; case "CHAT": lstChatBox.Items.Add(receivedString["ReceiverName"] + " :" + receivedString["Message"]); lstChatBox.TopIndex = lstChatBox.Items.Count - 1; break; case "READY": MessageBox.Show(receivedString["ReceiverName"] + " đã sẵn sàng chơi."); this.isGuestReady = true; if ((this.isReady) && (networkManager.role == NetworkManager.Role.Server)) { StartGame(); } break; case "OUT": MessageBox.Show("Máy bạn mất kết nối với " + receivedString["ReceiverName"], "Mất kết nối"); networkManager.Disconnect(); networkManager.Disconnect(); this.ActiveListener = false; tRec = new Thread(new ThreadStart(ListenForRequest)); tRec.IsBackground = true; tRec.Start(); break; case "SENDED": break; case "MOVE": //Thêm nước đi break; case "LOSE": MessageBox.Show("Chúc mừng bạn đã thắng " + networkManager.receiverInfo.hostName); panel1.Enabled = false; break; case "DRAW": DialogResult drdraw = MessageBox.Show(networkManager.receiverInfo.hostName + " xin Hòa. Bạn đồng ý không ?", "XIN HÒA", MessageBoxButtons.OKCancel); if (drdraw == DialogResult.OK) { packet = new Packet("DRAWOK", ""); networkManager.SendPacket(packet); MessageBox.Show("Bạn đã Hòa với " + networkManager.receiverInfo.hostName + ". Cố gắng thêm nhé."); panel1.Enabled = false; } else { packet = new Packet("DRAWCANCEL", ""); networkManager.SendPacket(packet); } break; case "DRAWOK": MessageBox.Show("Bạn đã Hòa với " + networkManager.receiverInfo.hostName + ". Cố gắng thêm nhé."); panel1.Enabled = false; break; case "DRAWCANCEL": MessageBox.Show(networkManager.receiverInfo.hostName + " không đồng ý HÒA."); break; } } } catch { if (networkManager.receiverInfo != null) { MessageBox.Show("Máy bạn đã mất kết nối với " + networkManager.receiverInfo.hostName, "Mất kết nối"); } else { } } } }