private void GiveFlop() { Card flop1 = _deck.GetRandomCard(); Card flop2 = _deck.GetRandomCard(); Card flop3 = _deck.GetRandomCard(); BinaryFormatter formatter = new BinaryFormatter(); // Выдаем первую карту flop'а using (MemoryStream memory = new MemoryStream()) { // Количество реально записанных в мэйлслот байт uint bytesWritten = 0; byte[] bytes = new byte[400]; formatter.Serialize(memory, flop1); bytes = memory.ToArray(); // Выполняем запись последовательности байт в мэйлслот Mailslot.WriteFile(mailslotHandle, bytes, Convert.ToUInt32(bytes.Length), ref bytesWritten, 0); Console.WriteLine($"Flop1 is {flop1.ToString()}"); } // Выдаем вторую карту flop'а using (MemoryStream memory = new MemoryStream()) { uint bytesWritten = 0; byte[] bytes = new byte[400]; formatter.Serialize(memory, flop2); bytes = memory.ToArray(); Mailslot.WriteFile(mailslotHandle, bytes, Convert.ToUInt32(bytes.Length), ref bytesWritten, 0); Console.WriteLine($"Flop2 is {flop2.ToString()}"); } // Выдаем третью карту flop'а using (MemoryStream memory = new MemoryStream()) { uint bytesWritten = 0; byte[] bytes = new byte[400]; formatter.Serialize(memory, flop3); bytes = memory.ToArray(); Mailslot.WriteFile(mailslotHandle, bytes, Convert.ToUInt32(bytes.Length), ref bytesWritten, 0); Console.WriteLine($"Flop3 is {flop3.ToString()}"); } cardsOnTable[0] = flop1; cardsOnTable[1] = flop2; cardsOnTable[2] = flop3; }
// Отправляем несуществующую карту как признак окончания раздачи private void SendGameEnd() { // Количество реально записанных в мэйлслот байт uint bytesWritten = 0; Card endGame = new Card(CardSuit.Count, CardQuality.Count); BinaryFormatter formatter = new BinaryFormatter(); using (MemoryStream memory = new MemoryStream()) { byte[] bytes = new byte[400]; // Выдаем пятую карту (river) formatter.Serialize(memory, endGame); bytes = memory.ToArray(); // Выполняем запись последовательности байт в мэйлслот Mailslot.WriteFile(mailslotHandle, bytes, Convert.ToUInt32(bytes.Length), ref bytesWritten, 0); } }
private void GiveTurn() { // Количество реально записанных в мэйлслот байт uint bytesWritten = 0; Card turn = _deck.GetRandomCard(); BinaryFormatter formatter = new BinaryFormatter(); using (MemoryStream memory = new MemoryStream()) { byte[] bytes = new byte[400]; // Выдаем червертую карту (turn) formatter.Serialize(memory, turn); bytes = memory.ToArray(); // Выполняем запись последовательности байт в мэйлслот Mailslot.WriteFile(mailslotHandle, bytes, Convert.ToUInt32(bytes.Length), ref bytesWritten, 0); Console.WriteLine($"Turn is {turn.ToString()}"); } cardsOnTable[3] = turn; }
private void ConnectMailslot() { try { // Подключаемся для выполнения широковещательной передачи mailslotHandle = Mailslot.CreateFile(mailslotName, Types.EFileAccess.GenericWrite, Types.EFileShare.Write, 0, Types.ECreationDisposition.CreateAlways, 0, 0); if (mailslotHandle != -1) { mailslotConnected = true; Console.WriteLine("Соединение с мейлслотом прошло успешно"); } else { Console.WriteLine("Не удалось подключиться к мейлслоту"); } } catch { Console.WriteLine("Не удалось подключиться к мейлслоту"); } }