Специально для работы внутри системы есть unix сокеты, так что не надо корявость прог оправдыватьhatred писал(а):а по сокетам внутри системы вообще как работать? ) отключи lo и система вообще работать откажется нормально, оно и понятно. резолвить пытаются не конкретные проги, это механизм в glibc. Почитай, мне моих познаний достаточно для нормальной жизни, но что бы полностью объяснить тебе - нет
Вышла Mandriva 2009
Re: Вышла Mandriva 2009
- hatred
- Global Moderator
- Сообщения: 1205
- Зарегистрирован: 08 июн 2006 00:32
- Откуда: Владивосток
- Контактная информация:
Re: Вышла Mandriva 2009
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 и посмотреть что там происходит и поглядеть что внутри написано, бумс удивлены зачастую.
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 и посмотреть что там происходит и поглядеть что внутри написано, бумс удивлены зачастую.
Прошли времена когда на элементарные вопросы можно было отвечать man <что-то там> (с) из сети
Hatred's Log Place | My GitHub repos | My Gitlab repos
Hatred's Log Place | My GitHub repos | My Gitlab repos
-
- Sr. Member
- Сообщения: 286
- Зарегистрирован: 07 июн 2006 16:10
- Откуда: Владивосток
- Контактная информация:
Re: Вышла Mandriva 2009
В кроссплатформенных прогах итак полно огорода, а использование сокетов юникс не требует много кода добавлять (всего несколько строк имхо). А поскольку сокеты юникс быстрее, то и смысл их заюзать имеется.
А если уж решили использовать сокет ip, то используйте явно 127.0.0.1 и проблем не возникнет. Кстати, а localhost.localdomain в винде разве есть?
А если уж решили использовать сокет ip, то используйте явно 127.0.0.1 и проблем не возникнет. Кстати, а localhost.localdomain в винде разве есть?
Re: Вышла Mandriva 2009
Господа должен извинтся за дезинформацию. Правка /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 журналы и т.д ) что и вызывает тормоза . Хотя всё лишнее для меня я отключал. Поскольку тема вроде обсуждается до сих пор возможно народу это будет интересно.
- SCIF
- Full Member
- Сообщения: 144
- Зарегистрирован: 07 июн 2006 15:50
- Откуда: Владивосток
- Контактная информация:
Re: Вышла Mandriva 2009
Во. Это уже интересно. Давайте обсудим. На мой взгляд они нифига не быстрей. Тоже самое внутриядерное пространство.loooser писал(а):А поскольку сокеты юникс быстрее, то и смысл их заюзать имеется.
-
- Sr. Member
- Сообщения: 286
- Зарегистрирован: 07 июн 2006 16:10
- Откуда: Владивосток
- Контактная информация:
Re: Вышла Mandriva 2009
SCIF: везде говорят, что быстрее, а я не вижу причин не верить :)
Чисто теоретически - даже локально надо завернуть пакет в ip-конверт + tcp или udp. При этом у udp ограничение на размер пакета, а у tcp куча накладных расходов: на установку соединения, на подтверждение приёма пакетов и др. вещи, совершенно не нужные локально.
А потом ещё развернуть этот пакет обратно...
Не, если у тебя есть результаты каких-то тестов, то выкладывай конечно :)
Чисто теоретически - даже локально надо завернуть пакет в ip-конверт + tcp или udp. При этом у udp ограничение на размер пакета, а у tcp куча накладных расходов: на установку соединения, на подтверждение приёма пакетов и др. вещи, совершенно не нужные локально.
А потом ещё развернуть этот пакет обратно...
Не, если у тебя есть результаты каких-то тестов, то выкладывай конечно :)
Re: Вышла Mandriva 2009
1) Это OpenOffice, что ли? А вот создатели иксов что-то не надорвались использовать различные протоколы для локальной связи и для сети.1. если прога изначально планируется для использования сетевой работы, нахрена горидить огород с разными подключеними?
2. если прога планируется кроссплатформенной, как она будет себя вести там где нет unix sockets? кстати на винде они есть?
2) Будет использовать средства соответствующих ОС.
Да, unix сокеты быстрее, чем локальные TCP/IP. Написал тупой тест, разница примерно в два раза.
- hatred
- Global Moderator
- Сообщения: 1205
- Зарегистрирован: 08 июн 2006 00:32
- Откуда: Владивосток
- Контактная информация:
Re: Вышла Mandriva 2009
Ну тупой не тупой тест... тогда уж давайте для одмена данными IPC юзать, ваще быстро будет не, я не против сокетов, ни в коем рааааааааазе, это вообще весчь классная, я просто ленив писать ifы, не ну когда заоптимиздить нужо, это да...
о, кстати, а кто авторитетно скажет, а что же все таки там с localhost? А баталия развернулась Unix Sockets vs. TCP/IP на локальной машине. Не кажется, что спорим ни о чем?
Кситати... а может там дело в X11? ;-) экран то может быть и DISPLAY=:1.0 и DISPLAY=127.0.0.1:1.0, а так же DISPLAY=localhost:1.0, это ещё одно предположение. Тут аще даже приложение ни при чем будет :-D Кому не лениво исходники XOpenDisplay() посмотреть? Гентушники, ау, всё равно собирали же, должны сырцы под руками лежать )
о, кстати, а кто авторитетно скажет, а что же все таки там с localhost? А баталия развернулась Unix Sockets vs. TCP/IP на локальной машине. Не кажется, что спорим ни о чем?
Кситати... а может там дело в X11? ;-) экран то может быть и DISPLAY=:1.0 и DISPLAY=127.0.0.1:1.0, а так же DISPLAY=localhost:1.0, это ещё одно предположение. Тут аще даже приложение ни при чем будет :-D Кому не лениво исходники XOpenDisplay() посмотреть? Гентушники, ау, всё равно собирали же, должны сырцы под руками лежать )
Прошли времена когда на элементарные вопросы можно было отвечать man <что-то там> (с) из сети
Hatred's Log Place | My GitHub repos | My Gitlab repos
Hatred's Log Place | My GitHub repos | My Gitlab repos
- hatred
- Global Moderator
- Сообщения: 1205
- Зарегистрирован: 08 июн 2006 00:32
- Откуда: Владивосток
- Контактная информация:
Re: Вышла Mandriva 2009
А ещё конкретнее, где XOpenDisplay вызывается, или в самом OOo или в GTK?
Прошли времена когда на элементарные вопросы можно было отвечать man <что-то там> (с) из сети
Hatred's Log Place | My GitHub repos | My Gitlab repos
Hatred's Log Place | My GitHub repos | My Gitlab repos
-
- Sr. Member
- Сообщения: 286
- Зарегистрирован: 07 июн 2006 16:10
- Откуда: Владивосток
- Контактная информация:
Re: Вышла Mandriva 2009
а, т.е. ты сам точно не знаешь в чём прикол? Я просто не в первый раз уже слышу подобный совет, вот мне и стало интересно - где тут собака зарыта.
Сейчас отключил у себя в etch запись о localhost.localdomain (localhost оставил) - пока тормозов не заметил. Правда, у меня всегда днс-сервер доступен, так что отрицательный ответ будет получен сразу и тормоза я вряд ли замечу :(
Сейчас отключил у себя в etch запись о localhost.localdomain (localhost оставил) - пока тормозов не заметил. Правда, у меня всегда днс-сервер доступен, так что отрицательный ответ будет получен сразу и тормоза я вряд ли замечу :(
- hatred
- Global Moderator
- Сообщения: 1205
- Зарегистрирован: 08 июн 2006 00:32
- Откуда: Владивосток
- Контактная информация:
Re: Вышла Mandriva 2009
А я где-то говорил что точно знаю? ))))
Прошли времена когда на элементарные вопросы можно было отвечать man <что-то там> (с) из сети
Hatred's Log Place | My GitHub repos | My Gitlab repos
Hatred's Log Place | My GitHub repos | My Gitlab repos
-
- Sr. Member
- Сообщения: 286
- Зарегистрирован: 07 июн 2006 16:10
- Откуда: Владивосток
- Контактная информация:
Re: Вышла Mandriva 2009
Нагуглил вот такое:
Похоже, что где-то в самих иксах какая-то хрень непонятная присутствует. Вот им и надо слать багрепорты с патчами. Есть ли среди нас си-богатыри? :)Знаете чё, был у меня ещё такой трабл, иксы начинали ужасно тормозить, когда hostname не соответствовал тому, что написано в /etc/hosts. Т.е. если, к примеру, в /etc/HOSTNAME (как в Слаке) прописано localhost.localdomain, команда hostname даёт имя localhost, а в /etc/hosts записано "127.0.0.1 localhost.localdomain" вместо "127.0.0.1 localhost", то начинаются нечеловеческие тормоза, при этом иксы в логе пишут что-то про hostname - какую-то ошибку.
- hatred
- Global Moderator
- Сообщения: 1205
- Зарегистрирован: 08 июн 2006 00:32
- Откуда: Владивосток
- Контактная информация:
Re: Вышла Mandriva 2009
ну я отправить могу, текст напишите, да как воспроизвести ошибку не на уровне, вот я тут заметил и мне вроде как кажется так что ребятки давайте сначала в XOpenDisplay смотрите
Прошли времена когда на элементарные вопросы можно было отвечать man <что-то там> (с) из сети
Hatred's Log Place | My GitHub repos | My Gitlab repos
Hatred's Log Place | My GitHub repos | My Gitlab repos
Re: Вышла Mandriva 2009
после того как прописал в файле /ecs/host 127.0.0.1 localhost.localdomain начались тормоза при старте програм под wine например клиент "chesspanet" ,прога "задачки по тактике" жутко тормозили - а вот doom3 почемуто нет .. убрал запись localdomain нормальная работа восстановилась.
Я уже чувствую желание найти генту и ковырять сырци до победы. Может кто подскажет дистр чтобы там самому всё крутить ?
Я уже чувствую желание найти генту и ковырять сырци до победы. Может кто подскажет дистр чтобы там самому всё крутить ?
- hatred
- Global Moderator
- Сообщения: 1205
- Зарегистрирован: 08 июн 2006 00:32
- Откуда: Владивосток
- Контактная информация:
Re: Вышла Mandriva 2009
Генту или LFS :-D
можешь, Arch, если крутить только отдельные части нужно
можешь, Arch, если крутить только отдельные части нужно
Прошли времена когда на элементарные вопросы можно было отвечать man <что-то там> (с) из сети
Hatred's Log Place | My GitHub repos | My Gitlab repos
Hatred's Log Place | My GitHub repos | My Gitlab repos