<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: локальные сокеты и многократный bind на один адрес</title>
    <link>https://opennet.ru/openforum/vsluhforumID9/7848.html</link>
    <description>Здравствуйте, помогите разобраться. &lt;br&gt;&lt;br&gt;Пробую написать мультипоточный демон на си++ использующий для связи клиент-сервер локальные сокеты (AF_UNIX). Все потоки сервера должны слушать один и тот же локальный адрес, скажем, &quot;./dserver.sock&quot;, но сделать bind получается только для одного потока. Поиском нашел решение только для AF_INET сокетов: помог бы флаг &quot;SO_REUSEADDR&quot;, но для локальных сокетов (AF_UNIX) он бесполезен. Как же сделать мультипоточность, чтобы сервер смог слушать и обрабатывать одновременно &quot;./dserver.sock&quot; ? &lt;br&gt;&lt;br&gt;&lt;br&gt;Спасибо!&lt;br&gt;&lt;br&gt;ps. тип сокета SOCK_STREAM, возможно использовать нужно другой тип и флаг заработает? &lt;br&gt;</description>

<item>
    <title>локальные сокеты и многократный bind на один адрес (FleX)</title>
    <link>https://opennet.ru/openforum/vsluhforumID9/7848.html#5</link>
    <pubDate>Fri, 23 Jan 2009 19:06:57 GMT</pubDate>
    <description>&amp;gt;&amp;gt; Теперь пробую найти докумендация, как сделать именно пул потоков, как &lt;br&gt;&amp;gt;&amp;gt;вы написали, чтобы не создавать каждый раз новый поток при запросе, &lt;br&gt;&amp;gt;&amp;gt;а давать сигнал существующему. &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;У. Р. Стивенс &lt;br&gt;&amp;gt;UNIX. Разработка сетевых приложений &lt;br&gt;&amp;gt;3-е издание &lt;br&gt;&lt;br&gt;Спасибо! Нашел, уже читаю, правда только 2-е издание (отсканированое, в очень плохом качестве), 3-его вроде как нет нигде :-( надеюсь разберусь что к чему и примеры там найду. пока что понял, что нужно использовать мьютексы и pthread_cond_t совместно для сигналов созданым ранее потокам. дочернии потоки блокируются, пока родительский поток не подаст сигнал о том, что очередь не пуста. далее разблокируем мьютекс и запускаем поток. как-то так.&lt;br&gt;</description>
</item>

<item>
    <title>локальные сокеты и многократный bind на один адрес (devcoder)</title>
    <link>https://opennet.ru/openforum/vsluhforumID9/7848.html#4</link>
    <pubDate>Fri, 23 Jan 2009 16:17:56 GMT</pubDate>
    <description>&amp;gt; Теперь пробую найти докумендация, как сделать именно пул потоков, как &lt;br&gt;&amp;gt;вы написали, чтобы не создавать каждый раз новый поток при запросе, &lt;br&gt;&amp;gt;а давать сигнал существующему. &lt;br&gt;&lt;br&gt;У. Р. Стивенс&lt;br&gt;UNIX. Разработка сетевых приложений&lt;br&gt;3-е издание&lt;br&gt;</description>
</item>

<item>
    <title>локальные сокеты и многократный bind на один адрес (FleX)</title>
    <link>https://opennet.ru/openforum/vsluhforumID9/7848.html#3</link>
    <pubDate>Fri, 23 Jan 2009 15:08:09 GMT</pubDate>
    <description>&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt;while (1) &#123; &lt;br&gt;&amp;gt;  c = accept(s); &lt;br&gt;&amp;gt;  // далее создаем поток или выбираем созданный поток из пула &lt;br&gt;&amp;gt;потоков &lt;br&gt;&amp;gt;  // и отдаем ему c &lt;br&gt;&amp;gt;&#125; &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;Для AF_INET такой вариант работает, не знаю как дело будет с AF_UNIX, &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;не когда под них не прогал раннее :) &lt;br&gt;&lt;br&gt;Спасибо! так получилось все что нужно, теперь главный поток управляющий, а остальные рабочии. Теперь пробую найти докумендация, как сделать именно пул потоков, как вы написали, чтобы не создавать каждый раз новый поток при запросе, а давать сигнал существующему.&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>локальные сокеты и многократный bind на один адрес (Michelnok)</title>
    <link>https://opennet.ru/openforum/vsluhforumID9/7848.html#2</link>
    <pubDate>Fri, 23 Jan 2009 08:43:28 GMT</pubDate>
    <description>&amp;gt;&lt;br&gt;&amp;gt;Пробую написать мультипоточный демон на си++ использующий для связи клиент-сервер локальные сокеты &lt;br&gt;&amp;gt;(AF_UNIX). Все потоки сервера должны слушать один и тот же локальный &lt;br&gt;&amp;gt;адрес, скажем, &quot;./dserver.sock&quot;, но сделать bind получается только для одного потока. &lt;br&gt;&lt;br&gt;Используй один сокет для всех потоков.&lt;br&gt;</description>
</item>

<item>
    <title>локальные сокеты и многократный bind на один адрес (from_mars)</title>
    <link>https://opennet.ru/openforum/vsluhforumID9/7848.html#1</link>
    <pubDate>Fri, 23 Jan 2009 03:48:00 GMT</pubDate>
    <description>Может вам попробовать так:&lt;br&gt;&lt;br&gt;// основной поток серевера&lt;br&gt;s = socket();&lt;br&gt;bind(s);&lt;br&gt;listen(s);&lt;br&gt;while (1) &#123;&lt;br&gt;  c = accept(s);&lt;br&gt;  // далее создаем поток или выбираем созданный поток из пула потоков&lt;br&gt;  // и отдаем ему c&lt;br&gt;&#125;&lt;br&gt;&lt;br&gt;Для AF_INET такой вариант работает, не знаю как дело будет с AF_UNIX, &lt;br&gt;не когда под них не прогал раннее :)&lt;br&gt;&lt;br&gt;</description>
</item>

</channel>
</rss>
