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