<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: stream server с использованием epoll на c</title>
    <link>https://opennet.me/openforum/vsluhforumID9/9649.html</link>
    <description>Добрый день. Пишу программу, которая читает поток текста, потом в соответствии с правилом записывает его в определенное хранилище..&lt;br&gt;Проблема в том ,что после первого коннекта,второй и третий не всегда срабатывают,нужно отключить первый ,чтоб очередь дошла до них... Но когда коннектишся ,записываешь данные и отключаешся,все работает на ура даже при очень больших количествах клиентов..&lt;br&gt;Все это реализованн на C и epoll.&lt;br&gt;&lt;br&gt;Вот код, собственно:&lt;br&gt;void epoll()&#123;&lt;br&gt;&lt;br&gt;    int sz = 128;&lt;br&gt;    int rc = 0;&lt;br&gt;    char network_msg&#091;sz&#093;;&lt;br&gt;&lt;br&gt;    /* Buffer where events are returned */&lt;br&gt;    events = calloc(globals.maxcon, sizeof event);&lt;br&gt;&lt;br&gt;    listenfd = create_and_bind(arguments.listen_host, arguments.listen_port);&lt;br&gt;&lt;br&gt;    if (0 != setnonblocking(listenfd)) &#123;&lt;br&gt;        snprintf(network_msg, sz, &quot;Can not make non-blocking socket: - &#037;s&quot;, strerror(errno));&lt;br&gt;        log_debug(network_msg);&lt;br&gt;        halt();&lt;br&gt;    &#125;&lt;br&gt;&lt;br&gt;    if (-1 == listen(listenfd, globals.maxcon)) &#123;&lt;br&gt;        snprintf(network_msg, sz, &quot;Can not listen on &#037;s: &#037;s&quot;, argume</description>

<item>
    <title>stream server с использованием epoll на c (anonymous)</title>
    <link>https://opennet.me/openforum/vsluhforumID9/9649.html#3</link>
    <pubDate>Sun, 07 Apr 2013 16:28:11 GMT</pubDate>
    <description>&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt;&amp;gt; - Основной процесс висит, слушает (т.е. от только диспетчер).&lt;br&gt;&amp;gt;&amp;gt; - Приходит заявка; основной процес дает ее на обработку дочерному процессу и &lt;br&gt;&amp;gt;&amp;gt; продолжает слушать &lt;br&gt;&amp;gt;&amp;gt; - Приходит вторая заявка, основной процесс отдает ее второму дочерному процессу и &lt;br&gt;&amp;gt;&amp;gt; т.д.&lt;br&gt;&amp;gt;&amp;gt; Насчет создания дочерных процессов читаем либо про fork()/exec(), либо про threads.&lt;br&gt;&amp;gt;&amp;gt; Насчет передачи заявки, либо держим пул готовых дочерных процессов (и учимся IPC), &lt;br&gt;&amp;gt;&amp;gt; либо порождаем процесс как только придет заявка.&lt;br&gt;&amp;gt;&amp;gt; WWel, &lt;br&gt;&amp;gt; Благодарю за ответ &lt;br&gt;&lt;br&gt;Вы также можете посмотреть соседний тред, http://www.opennet.ru/openforum/vsluhforumID9/9642.html пост 12.&lt;br&gt;</description>
</item>

<item>
    <title>stream server с использованием epoll на c (NEO)</title>
    <link>https://opennet.me/openforum/vsluhforumID9/9649.html#2</link>
    <pubDate>Fri, 01 Mar 2013 11:39:24 GMT</pubDate>
    <description>&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt; обработчиков: &lt;br&gt;&amp;gt; - Основной процесс висит, слушает (т.е. от только диспетчер).&lt;br&gt;&amp;gt; - Приходит заявка; основной процес дает ее на обработку дочерному процессу и &lt;br&gt;&amp;gt; продолжает слушать &lt;br&gt;&amp;gt; - Приходит вторая заявка, основной процесс отдает ее второму дочерному процессу и &lt;br&gt;&amp;gt; т.д.&lt;br&gt;&amp;gt; Насчет создания дочерных процессов читаем либо про fork()/exec(), либо про threads.&lt;br&gt;&amp;gt; Насчет передачи заявки, либо держим пул готовых дочерных процессов (и учимся IPC), &lt;br&gt;&amp;gt; либо порождаем процесс как только придет заявка.&lt;br&gt;&amp;gt; WWel, &lt;br&gt;&lt;br&gt;Благодарю за ответ&lt;br&gt;</description>
</item>

<item>
    <title>stream server с использованием epoll на c (Mr. Mistoffelees)</title>
    <link>https://opennet.me/openforum/vsluhforumID9/9649.html#1</link>
    <pubDate>Fri, 01 Mar 2013 11:29:53 GMT</pubDate>
    <description>Привет,&lt;br&gt;&lt;br&gt;&amp;gt; Проблема в том ,что после первого коннекта,второй и третий не всегда срабатывают,нужно &lt;br&gt;&amp;gt; отключить первый ,чтоб очередь дошла до них... Но когда коннектишся ,записываешь &lt;br&gt;&amp;gt; данные и отключаешся,все работает на ура даже при очень больших количествах &lt;br&gt;&amp;gt; клиентов..&lt;br&gt;&lt;br&gt;Если вам нужно обрабатывать несколько одновременных сессий, вам нужно несколько одновременных обработчиков: &lt;br&gt;- Основной процесс висит, слушает (т.е. от только диспетчер).&lt;br&gt;- Приходит заявка; основной процес дает ее на обработку дочерному процессу и продолжает слушать&lt;br&gt;- Приходит вторая заявка, основной процесс отдает ее второму дочерному процессу и т.д.&lt;br&gt;&lt;br&gt;Насчет создания дочерных процессов читаем либо про fork()/exec(), либо про threads.&lt;br&gt;&lt;br&gt;Насчет передачи заявки, либо держим пул готовых дочерных процессов (и учимся IPC), либо порождаем процесс как только придет заявка. &lt;br&gt;&lt;br&gt;WWel,&lt;br&gt;</description>
</item>

</channel>
</rss>
