Как бороться с повышением пинга при подключении к компьютеру с помощью сокета? - C#
Формулировка задачи:
Есть клиент-серверная модель сети написанная для игры. Обработка сокетов осуществляется с помощью асинхронных функций. Соль вся в том, что когда сервер и клиент игры запущенны на локальном компьютере, то пинг небольшой, и все прекрасно работает, но если коннектится на другой комп, то уже при пинге 70-80 доходят не все пакеты, сокета забиваются.
Собственно как с этим бороться? Есть у кого варианты?
З.Ы. Работает это все на TCP протоколе.
Решение задачи: «Как бороться с повышением пинга при подключении к компьютеру с помощью сокета?»
textual
Листинг программы
public static void Send(BinaryWriter stream, bool closeStream)
{
if (!isConnected)
{
Console.WriteError("Unable to send packet becouse connection not found.");
return;
}
try
{
stream.Seek(0, SeekOrigin.Begin);
int streamLength = (int)stream.BaseStream.Length;
byte[] bytes = new byte[streamLength];
stream.BaseStream.Read(bytes, 0, streamLength);
if (closeStream) stream.Close();
socket.BeginSend(bytes, 0, bytes.Length, SocketFlags.None, new System.AsyncCallback(OnSend), socket);
}
catch(System.Exception e)
{
Console.WriteError("Send packet exception: " + e);
Disconnect();
}
}
private static void OnSend(System.IAsyncResult ar)
{
Socket socket = (ar.AsyncState as Socket);
try
{
socket.EndSend(ar);
}
catch(System.Exception e)
{
Console.WriteError("On Send packet exception: " + e);
Disconnect();
}
}