Страница 4 из 5

Re: Вышла Mandriva 2009

Добавлено: 06 дек 2008 15:43
michael
hatred писал(а):а по сокетам внутри системы вообще как работать? :)) отключи lo и система вообще работать откажется нормально, оно и понятно. резолвить пытаются не конкретные проги, это механизм в glibc. Почитай, мне моих познаний достаточно для нормальной жизни, но что бы полностью объяснить тебе - нет :)
Специально для работы внутри системы есть unix сокеты, так что не надо корявость прог оправдывать :)

Re: Вышла Mandriva 2009

Добавлено: 06 дек 2008 17:27
hatred
man socket:

int socket(int domain, int type, int protocol);

Параметр domain задает "домен" коммуникации; выбирает набор протоколов, которые будут использоваться для коммуникации. Такие наборы описаны в <sys/socket.h>. В настоящее время понимаются такие форматы:
Название Назначение Страница
PF_UNIX,PF_LOCAL Локальная коммуникация unix(7)
PF_INET IPv4, протоколы Интернет ip(7)

man 7 unix:
unix_socket = socket(AF_UNIX, type, 0);

потом bind/connect

man connect:
int connect(int sockfd, const struct sockaddr *serv_addr, socklen_t addrlen);

man bind:
int bind(int sockfd, struct sockaddr *my_addr, socklen_t addrlen);

для unix socket структура sockaddr используется эта (man 7 unix):
struct sockaddr_un {
sa_family_t sun_family; /* AF_UNIX */
char sun_path[UNIX_PATH_MAX]; /* pathname */
};

для tcp/ip (man 7 ip):
struct sockaddr_in {
sa_family_t sin_family; /* семейство адресов: AF_INET */
u_int16_t sin_port; /* порт сокета в сетевом порядке байт */
struct in_addr sin_addr; /* адрес в интернете */
};

/* Адрес в интернете. */
struct in_addr {
u_int32_t s_addr; /* адрес сокета в сетевом порядке байт */
};

Теперь вопросы
1. если прога изначально планируется для использования сетевой работы, нахрена горидить огород с разными подключеними?
2. если прога планируется кроссплатформенной, как она будет себя вести там где нет unix sockets? кстати на винде они есть?

ну и ещё куча всяких мелочей :) запустить любую прогу через strace -o OUT progname и посмотреть что там происходит и поглядеть что внутри написано, бумс удивлены зачастую.

Re: Вышла Mandriva 2009

Добавлено: 07 дек 2008 00:06
loooser
В кроссплатформенных прогах итак полно огорода, а использование сокетов юникс не требует много кода добавлять (всего несколько строк имхо). А поскольку сокеты юникс быстрее, то и смысл их заюзать имеется.

А если уж решили использовать сокет ip, то используйте явно 127.0.0.1 и проблем не возникнет. Кстати, а localhost.localdomain в винде разве есть?

Re: Вышла Mandriva 2009

Добавлено: 07 дек 2008 10:09
denis
Господа должен извинтся за дезинформацию. Правка /etc/host также дала лишь временный эффект, затем опять firefox 2.0.16 начинает тупить и тормозить при старте. Вылечил установкой 2 - х пакетов с версией 2.0.0.6 из 2007 мандривы. rpm c libmozilla встала без проблем а rpm moziilla-firefox X X 0.6 потянула кучу зависимостей. Ставил из консоли с ключом --nodeps . Результат - 1-й запуск крах ругается на x- сервер (?) 2-й и последующие запуски ОК . Спартует вроде быстрее оперы (с секундомером не мерял слишком быстро запускаются, через команду time просто лень) Возможно дело в том что при дефолтной установке в firefox встраивают кучу левых плагинов (у меня там раньше были всякие блоги, live журналы и т.д ) что и вызывает тормоза . Хотя всё лишнее для меня я отключал. Поскольку тема вроде обсуждается до сих пор возможно народу это будет интересно.

Re: Вышла Mandriva 2009

Добавлено: 08 дек 2008 09:52
SCIF
loooser писал(а):А поскольку сокеты юникс быстрее, то и смысл их заюзать имеется.
Во. Это уже интересно. Давайте обсудим. На мой взгляд они нифига не быстрей. Тоже самое внутриядерное пространство.

Re: Вышла Mandriva 2009

Добавлено: 09 дек 2008 09:15
loooser
SCIF: везде говорят, что быстрее, а я не вижу причин не верить :)
Чисто теоретически - даже локально надо завернуть пакет в ip-конверт + tcp или udp. При этом у udp ограничение на размер пакета, а у tcp куча накладных расходов: на установку соединения, на подтверждение приёма пакетов и др. вещи, совершенно не нужные локально.
А потом ещё развернуть этот пакет обратно...

Не, если у тебя есть результаты каких-то тестов, то выкладывай конечно :)

Re: Вышла Mandriva 2009

Добавлено: 09 дек 2008 14:50
michael
1. если прога изначально планируется для использования сетевой работы, нахрена горидить огород с разными подключеними?
2. если прога планируется кроссплатформенной, как она будет себя вести там где нет unix sockets? кстати на винде они есть?
1) Это OpenOffice, что ли? А вот создатели иксов что-то не надорвались использовать различные протоколы для локальной связи и для сети.
2) Будет использовать средства соответствующих ОС.

Да, unix сокеты быстрее, чем локальные TCP/IP. Написал тупой тест, разница примерно в два раза.

Re: Вышла Mandriva 2009

Добавлено: 09 дек 2008 19:50
hatred
Ну тупой не тупой тест... тогда уж давайте для одмена данными IPC юзать, ваще быстро будет :) не, я не против сокетов, ни в коем рааааааааазе, это вообще весчь классная, я просто ленив писать ifы, не ну когда заоптимиздить нужо, это да...

о, кстати, а кто авторитетно скажет, а что же все таки там с localhost? ;) А баталия развернулась Unix Sockets vs. TCP/IP на локальной машине. Не кажется, что спорим ни о чем? :D

Кситати... а может там дело в X11? ;-) экран то может быть и DISPLAY=:1.0 и DISPLAY=127.0.0.1:1.0, а так же DISPLAY=localhost:1.0, это ещё одно предположение. Тут аще даже приложение ни при чем будет :-D Кому не лениво исходники XOpenDisplay() посмотреть? :) Гентушники, ау, всё равно собирали же, должны сырцы под руками лежать )

Re: Вышла Mandriva 2009

Добавлено: 09 дек 2008 19:53
hatred
А ещё конкретнее, где XOpenDisplay вызывается, или в самом OOo или в GTK?

Re: Вышла Mandriva 2009

Добавлено: 10 дек 2008 13:13
loooser
а, т.е. ты сам точно не знаешь в чём прикол? Я просто не в первый раз уже слышу подобный совет, вот мне и стало интересно - где тут собака зарыта.

Сейчас отключил у себя в etch запись о localhost.localdomain (localhost оставил) - пока тормозов не заметил. Правда, у меня всегда днс-сервер доступен, так что отрицательный ответ будет получен сразу и тормоза я вряд ли замечу :(

Re: Вышла Mandriva 2009

Добавлено: 11 дек 2008 14:26
hatred
А я где-то говорил что точно знаю? :)))))

Re: Вышла Mandriva 2009

Добавлено: 11 дек 2008 16:24
loooser
Нагуглил вот такое:
Знаете чё, был у меня ещё такой трабл, иксы начинали ужасно тормозить, когда hostname не соответствовал тому, что написано в /etc/hosts. Т.е. если, к примеру, в /etc/HOSTNAME (как в Слаке) прописано localhost.localdomain, команда hostname даёт имя localhost, а в /etc/hosts записано "127.0.0.1 localhost.localdomain" вместо "127.0.0.1 localhost", то начинаются нечеловеческие тормоза, при этом иксы в логе пишут что-то про hostname - какую-то ошибку.
Похоже, что где-то в самих иксах какая-то хрень непонятная присутствует. Вот им и надо слать багрепорты с патчами. Есть ли среди нас си-богатыри? :)

Re: Вышла Mandriva 2009

Добавлено: 11 дек 2008 18:53
hatred
ну я отправить могу, текст напишите, да как воспроизвести ошибку :) не на уровне, вот я тут заметил и мне вроде как кажется :) так что ребятки давайте сначала в XOpenDisplay смотрите :)

Re: Вышла Mandriva 2009

Добавлено: 14 дек 2008 21:15
denis
после того как прописал в файле /ecs/host 127.0.0.1 localhost.localdomain начались тормоза при старте програм под wine например клиент "chesspanet" ,прога "задачки по тактике" жутко тормозили - а вот doom3 почемуто нет .. убрал запись localdomain нормальная работа восстановилась.
Я уже чувствую желание найти генту и ковырять сырци до победы. Может кто подскажет дистр чтобы там самому всё крутить ?

Re: Вышла Mandriva 2009

Добавлено: 15 дек 2008 10:03
hatred
Генту или LFS :-D

можешь, Arch, если крутить только отдельные части нужно