Вернуться   МПМ Былины - Мир Древней Руси > Для игроков > Общение с богами

Общение с богами Прежде чем что-то писать - подумайте. А то ведь и лягушкой стать недолго.

Ответ
 
Опции темы Опции просмотра
Старый 05.10.2004, 18:00   #1
olleg
Новичок
 
Регистрация: 28.09.2004
Сообщений: 12
По умолчанию Патч с опциями сокета

Этот патч я в январе 2004 предлагал для Хьюрварда. Никто на него не жаловался. По идее, должно работать лучше, должны уменьшиться лаги. Особенно должна уменьшиться задержка поступления сообщений в начале битвы. По хорошему надо аналогичные изменения внести в mcclient, да руки н е доходят. Всю славу - Горилюбу.

*** comm.c.orig 2004-10-05 17:39:24.229138279 +0400
--- comm.c 2004-10-05 17:42:51.507308315 +0400
***************
*** 1754,1759 ****
--- 1754,1778 ----
/* keep it from blocking */
nonblock(desc);

+ { // set socket options Olleg 2004-10-05
+ int opt;
+ #if defined(IPTOS_LOWDELAY) && !defined(CIRCLE_MACINTOSH)
+ // Выставляем приоритет для интерактивных пакетов
+ opt=IPTOS_LOWDELAY;
+ if (setsockopt(s, SOL_IP, IP_TOS, &opt, sizeof(opt)) < 0) {
+ perror ("Can't set IPTOS_LOWDELAY\n");
+ }
+ #endif
+ #if defined(TCP_NODELAY) && !defined(CIRCLE_MACINTOSH)
+ // не накапливать информацию в буфере перед посылкой абоненту
+ // ведет к уменьшению размеров пакетов и своевременному их отправлению
+ opt=1;
+ if (setsockopt(s, SOL_TCP, TCP_NODELAY, &opt, sizeof(opt)) < 0) {
+ perror ("Can't set TCP_NODELAY\n");
+ }
+ #endif
+ }
+
/* set the send buffer size */
if (set_sendbuf(desc) < 0)
{CLOSE_SOCKET(desc);
__________________
Olleg
olleg вне форума   Ответить с цитированием
Старый 06.10.2004, 04:17   #2
shapirus
Отличник форума
 
Регистрация: 23.09.2004
Сообщений: 450
По умолчанию RE: Патч с опциями сокета

#include <netinet/ip.h> надо не забыть.
shapirus вне форума   Ответить с цитированием
Старый 06.10.2004, 10:23   #3
olleg
Новичок
 
Регистрация: 28.09.2004
Сообщений: 12
По умолчанию RE: Патч с опциями сокета

Хм, у меня скомпилировалось без этого хидера. Linux SuSE 9.1
Возможно это зависит от операционки. Тогда надо будет вписать:

#ifdef операционка
#include <netinet/ip.h>
#endif
__________________
Olleg

Последний раз редактировалось olleg; 06.10.2004 в 13:22.
olleg вне форума   Ответить с цитированием
Старый 06.10.2004, 15:58   #4
shapirus
Отличник форума
 
Регистрация: 23.09.2004
Сообщений: 450
По умолчанию RE: Патч с опциями сокета

Цитата:
Сообщение от olleg
Хм, у меня скомпилировалось без этого хидера. Linux SuSE 9.1
Возможно это зависит от операционки. Тогда надо будет вписать:

#ifdef операционка
#include <netinet/ip.h>
#endif
у меня редхет седьмой, glibc 2.3.2, ядро 2.6.8.1. вот единственные два места, где определена константа IPTOS_LOWDELAY (именно ее определения у меня не хватало, чтобы mcclient пересобрать с аналогичным патчем):

[absh@dpc absh]$ grep -r IPTOS_LOWDELAY /usr/include/
/usr/include/linux/ip.h:#define IPTOS_LOWDELAY 0x10
/usr/include/netinet/ip.h:#define IPTOS_LOWDELAY 0x10

Странно все это. Но в любом случае не есть проблема. Только #ifdef туда лепить -- криво как-то...
shapirus вне форума   Ответить с цитированием
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 05:41.


Powered by vBulletin® Version 3.8.1
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: zCarot