Как бороться с повышением пинга при подключении к компьютеру с помощью сокета? - 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();
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.077 из 5
Похожие ответы