using ConsoleChatServer; using System; using System.Net; using System.Net.Sockets; using System.Text; namespace RockPaperScissorsClient { internal class Client { // Attributes static Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); const int PORT = 19000; const String URL = "server.allcatsaregrey.co.uk"; static IPAddress ip = IPSorter.FindIPv4Address(URL); static IPEndPoint endPoint = new IPEndPoint(ip, PORT); static void Main(string[] args) { Console.WriteLine("Starting client..."); // Connects to the server try { socket.Connect(endPoint); Console.WriteLine("Connected to server."); } catch (SocketException e) { Console.WriteLine($"Failed to connect to server: {e.Message}"); Environment.Exit(0); } // Asks the user for their name Console.Write("Enter your name: "); String name = Console.ReadLine(); // Sends the user's name to the server byte[] nameBuffer = Encoding.ASCII.GetBytes(name); socket.Send(nameBuffer, SocketFlags.None); // Asks for the users choice Console.Write("Choose your answer: (rock/paper/scissors) "); String choice = Console.ReadLine(); // Sends their choice to the server byte[] choiceBuffer = Encoding.ASCII.GetBytes(choice); socket.Send(choiceBuffer, SocketFlags.None); // Receives the server's choice byte[] serverChoiceBuffer = new byte[1024]; int serverChoiceReceived = socket.Receive(serverChoiceBuffer, SocketFlags.None); char[] serverChoiceChars = new char[serverChoiceReceived]; Decoder d = Encoding.UTF8.GetDecoder(); int serverChoiceCharLength = d.GetChars(serverChoiceBuffer, 0, serverChoiceReceived, serverChoiceChars, 0); String serverChoice = new string(serverChoiceChars); Console.WriteLine($"Server has chosen {serverChoice}."); // Determine winner if (choice == serverChoice || serverChoice == choice) { Console.WriteLine("Tied."); } else if (choice == "rock" && serverChoice == "scissors" || choice == "paper" && serverChoice == "rock" || choice == "scissors" && serverChoice == "paper") { Console.WriteLine($"{name} has won."); } else { Console.WriteLine("Server has won."); } Console.WriteLine("Press any key to exit."); Console.ReadKey(); } } }