public void PingPackageDeserializationTest() { PingPackage expected = new PingPackage { Value = 10 }; var buffer = expected.ToByteArray(); PingPackage actual = new PingPackage(); int len = 0; ClientPackageType packageType = ClientPackageType.None; using (var stream = new MemoryStream(buffer)) { using (var reader = new BinaryReader(stream)) { len = reader.ReadInt32(); packageType = (ClientPackageType)reader.ReadByte(); actual.FromByteArray(reader.ReadBytes(len - 1)); } } Assert.AreEqual(5, len); Assert.AreEqual(ClientPackageType.Ping, packageType); Assert.AreEqual(9, buffer.Length); Assert.AreEqual(expected.Value, actual.Value); }
public override void HandlePackage() { PingPackage pingPackage = (PingPackage)Package; Client.SendPackage(new PongPackage { Value = pingPackage.Value }); }
public void PingConstructorTest() { var packageBase = new PingPackage { Value = 10 }; Assert.AreEqual(10, packageBase.Value); Assert.AreEqual(ClientPackageType.Ping, packageBase.Type); }
public void PingSerializationTest() { var packageBase = new PingPackage { Value = 10 }; var buffer = packageBase.ToByteArray(); Assert.AreEqual(9, buffer.Length); }
public void GetPingPackageTest() { var package = new PingPackage { Value = 10 }; var data = package.ToByteArray(); ClientPackage clientPackage = _factory.GetNextPackage(data); Assert.NotNull(clientPackage); Assert.AreEqual(data, clientPackage.ToByteArray()); Assert.AreEqual(package.Type, clientPackage.Type); }
private void ConnectionCallback(IAsyncResult ar) { Debug.Log("Connected"); _tcpClient.EndConnect(ar); _stream = _tcpClient.GetStream(); var pingPackage = new PingPackage { Value = 10 }; SendPackage(pingPackage); _isNotMoreToRead = true; ReceivePackage(); }
/// <summary> /// Sets the latency of a connection. /// </summary> /// <param name="pingPackage">The PingPackage.</param> private void SetLatency(PingPackage pingPackage) { DateTime timeNow = DateTime.Now; TimeSpan dif = timeNow - pingPackage.TimeStamp; LocalConnection connection = GetConnection(pingPackage.Receiver); connection.Latency = (float)dif.TotalMilliseconds; //Kick the client if the latency is to high if (!(connection.Latency > TimeOutLatency)) { return; } SendNotificationPackage(NotificationMode.TimeOut, new IConnection[] { SerializableConnection.FromIConnection(connection) }); connection.Client.Close(); _connections.Remove(connection); }
private void SendPacket() { PingPackage pingPackage = new PingPackage { Value = value }; var arr = pingPackage.ToByteArray(); _stream.Write(arr, 0, arr.Length); _stream.BeginWrite(arr, 0, arr.Length, ar => { _stream.EndWrite(ar); Debug.Log("Date Sendet!"); }, _stream); }
/// <summary> /// Sending a ping request every 30 seconds to all clients. /// </summary> private void PingRequestLoop() { while (IsActive) { IConnection[] connectionList = SerializableConnection.FromIConnection(_connections.ToArray()); //Send a ping request to all clients for (int i = 0; i <= _connections.Count - 1; i++) { var pingPackage = new PingPackage { Receiver = _connections[i].IPAddress }; Send(pingPackage, _connections[i].IPAddress); //add the ping request to the connection manager. _connectionManager.AddPingRequest(new UdpPingRequest(_connections[i].IPAddress, pingPackage.TimeStamp)); //Also update the client list. SendNotificationPackage(NotificationMode.ClientList, connectionList); } //Idle for 15 seconds Thread.Sleep(15000); } }
/// <summary> /// Sending a ping request every 30 seconds to all clients. /// </summary> private void PingRequestLoop() { while (IsActive) { IConnection[] connectionList = SerializableConnection.FromIConnection(_connections.ToArray()); //Send a ping request to all clients for (int i = 0; i <= _connections.Count - 1; i++) { var pingPackage = new PingPackage { Receiver = _connections[i].IPAddress }; NetworkStream networkStream = _connections[i].Client.GetStream(); PackageSerializer.Serialize(pingPackage, networkStream); //May not be neccessary networkStream.Flush(); //Also update the client list. SendNotificationPackage(NotificationMode.ClientList, connectionList); } //Idle for 15 seconds Thread.Sleep(15000); } }