Задать вопрос
@gen_dalf

Очень большой пинг в клиент-серверном приложении в Windows Server 2012. Как уменьшить?

Я создал облачный сервер на Windows Server 2012 R2. При выполнении команды ping со своего компьютера на этот сервер пинг в среднем 60ms. Я написал простое клиент-серверное приложение на C#.

Клиент:
TcpClient client = new TcpClient();
client.Connect(IPAddress.Parse("адрес"), 10000);
NetworkStream stream = client.GetStream();
BinaryReader reader = new BinaryReader(stream);
BinaryWriter writer = new BinaryWriter(stream);
Stopwatch sw = new Stopwatch();
List<float> pings = new List<float>();
DateTime startTime = DateTime.Now;
Random random = new Random();

while(true)
{
		byte[] packet = Enumerable.Repeat<byte>(100, random.Next(50, 100)).ToArray();
		sw.Start();
		writer.Write(packet.Length);
		writer.Write(packet);
		packet = reader.ReadBytes(reader.ReadInt32());
		sw.Stop();
		pings.Add((float)sw.Elapsed.TotalMilliseconds);
		sw.Reset();
		DateTime now = DateTime.Now;          
		if(now - startTime > TimeSpan.FromSeconds(1))
		{
				startTime = now;
				Console.WriteLine(pings.Average());
				pings.Clear();
		}
}

Сервер:
TcpListener listener = new TcpListener(IPAddress.Any, 10000);
listener.Start();
TcpClient client = listener.AcceptTcpClient();
NetworkStream stream = client.GetStream();
BinaryReader reader = new BinaryReader(stream);
BinaryWriter writer = new BinaryWriter(stream);

while (true)
{
		byte[] packet = reader.ReadBytes(reader.ReadInt32());
		writer.Write(packet.Length);
		writer.Write(packet);
}

При запуске сервера на Windows Server, а клиента у себя я получаю результаты пинга в среднем 200ms.
На мой взгляд проблема кроется в настройках Windows Server`а. Подскажите, кто знает.
  • Вопрос задан
  • 2760 просмотров
Подписаться 2 Оценить 2 комментария
Пригласить эксперта
Ответы на вопрос 1
@gen_dalf Автор вопроса
Решение найдено. Если кому интересно - вот статья:
https://support.microsoft.com/kb/214397?wa=wsignin1.0
В данном коде проблема решается так:
client.NoDelay = true;
И в клиенте и в сервере.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы