public void Send(string message) { MessageString str = new MessageString { Message = message }; Send(str); }
public void PollNetwork() { if (_listener == null) { return; } if (IsOpenForNewConnecions && _listener.Pending()) { TcpClient newClient = _listener.AcceptTcpClient(); var clientMar = new ClientMarshaller(_clientIndex, newClient, new CommsMarshaller()); _clients.Add(clientMar); ConnectionStatus = GameConstants.ConnectionStatusEnum.Connected; ClientAdded(_clientIndex); var msg = new MessageString { Message = "Server: You are client number " + _clientIndex }; Send(newClient, msg); _clientIndex++; _logger.LogDebug("PollNetwork: New client " + _clientIndex + " added."); } if (ConnectionStatus == GameConstants.ConnectionStatusEnum.Connected) { try { foreach (var clientMarshaller in _clients) { TcpClient client = clientMarshaller.Client; int clientId = clientMarshaller.ClientId; try { NetworkStream stream = client.GetStream(); if (stream.DataAvailable) { do { int i = stream.Read(_readBuffer, 0, _readBuffer.Length); clientMarshaller.Marshaller.AddToReceiveBufferEnd(_readBuffer, i); while (clientMarshaller.Marshaller.IsObjectInReceiveBuffer()) { IMarshallable obj = clientMarshaller.Marshaller.DeSerializeNextObjectInReceiveBuffer(); _logger.LogDebug("PollNetwork: Object read from receive buffer: " + obj.ObjectTypeToken); DataReceived(clientId, obj); } } while (stream.DataAvailable); } } catch (Exception ex) { if (ex.InnerException == null) { _logger.LogError("Error in GameServer.PollNetwork: " + ex.ToString() + " \nStackTrace: " + ex.StackTrace); } else { _logger.LogError("Error in GameServer.PollNetwork: " + ex.ToString() + "\nInnerException: " + ex.InnerException.ToString() + "\nStackTrace: " + ex.StackTrace); } } } } catch (Exception ex) { if (ex.InnerException == null) { _logger.LogError("Error in GameServer.PollNetwork: " + ex.ToString() + " \nStackTrace: " + ex.StackTrace); } else { _logger.LogError("Error in GameServer.PollNetwork: " + ex.ToString() + "\nInnerException: " + ex.InnerException.ToString() + "\nStackTrace: " + ex.StackTrace); } } } }