private static void SendCurrentMap(ClientConnection client) { PacmanGame game = client.game; List <string> map = game.map.GetText(); int w = game.map.width; int h = game.map.height; map.Insert(0, $"{game.pacmanX}x{game.pacmanY}"); map.Insert(0, $"{w}x{h}"); strbuilder.Clear(); for (int i = 0; i < map.Count; i++) { strbuilder.Append(map[i]); char append = (i == map.Count - 1) ? ClientConnection.terminator : ClientConnection.delimiter; strbuilder.Append(append); } client.Send(strbuilder.ToString()); strbuilder.Clear(); }
// INITIALIZING ============================================================================ // Инициализация //========================================================================================= public ClientConnection(Socket client, int port) { this.client = client; this.port = port; endPoint = client.RemoteEndPoint; game = new PacmanGame(); // cоздаём новый экземпляр игры для этого клиента // получение данных мы делаем асинхронно BeginReceive(); // а отправку данных мы просто делаем в отдельном потоке if (disconnecting) { return; // это может потребоваться, если ошибка вылетит в BeginReceieve } lock (sendingThreadLocker) { sendingThread = new Thread(SendingThread) { IsBackground = true }; sendingThread.Start(); } }