<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: Файловые сокеты</title>
    <link>https://opennet.me/openforum/vsluhforumID9/7209.html</link>
    <description>Доброго времени!&lt;br&gt;&lt;br&gt;Столкнулся со странной проблемой. Создаю файловый сокет без путей (т.е. в текущей папке программы) - всё отлично работает. Создаю оный в папке /tmp клиент его не видит и всё тут. Вот код:&lt;br&gt;&lt;br&gt;#include &amp;lt;stdlib.h&amp;gt;&lt;br&gt;#include &amp;lt;stdio.h&amp;gt;&lt;br&gt;#include &amp;lt;string.h&amp;gt;&lt;br&gt;#include &amp;lt;errno.h&amp;gt;&lt;br&gt;#include &amp;lt;sys/types.h&amp;gt;&lt;br&gt;#include &amp;lt;sys/socket.h&amp;gt;&lt;br&gt;&lt;br&gt;#define SOCK_NAME &quot;/tmp/socket.soc&quot; // &amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt; меняю на &quot;socket.soc&quot; - работает&lt;br&gt;#define BUF_SIZE 256&lt;br&gt;&lt;br&gt;int main(int argc, char ** argv)&lt;br&gt;&#123;&lt;br&gt;    struct sockaddr srvr_name, rcvr_name;&lt;br&gt;    char buf&#091;BUF_SIZE&#093;;&lt;br&gt;    int   sock;&lt;br&gt;    int   namelen, bytes;&lt;br&gt;&lt;br&gt;    sock = socket(AF_UNIX, SOCK_DGRAM, 0);&lt;br&gt;    if (sock &amp;lt; 0)&#123;&lt;br&gt;perror(&quot;socket failed&quot;);&lt;br&gt;return EXIT_FAILURE;&lt;br&gt;    &#125;&lt;br&gt;    srvr_name.sa_family = AF_UNIX;&lt;br&gt;    strcpy(srvr_name.sa_data, SOCK_NAME);&lt;br&gt;    namelen = strlen(srvr_name.sa_data) + sizeof(srvr_name.sa_family) + 1;&lt;br&gt;    printf(&quot;Socket &#037;s, namesize &#037;i&#092;n&quot;, srvr_name.sa_data, namelen);&lt;br&gt;    unlink(SOCK_NAME);&lt;br&gt;    if(fork()==0)&#123;&lt;br&gt;    if (bind(sock, &amp;srvr_name, name</description>

<item>
    <title>Файловые сокеты (primus)</title>
    <link>https://opennet.me/openforum/vsluhforumID9/7209.html#2</link>
    <pubDate>Sun, 24 Feb 2008 17:51:10 GMT</pubDate>
    <description>&amp;gt;Кстати, если скопировать клиента в /tmp и там запустить (а в самом &lt;br&gt;&amp;gt;клиенте название сокета без путей конечно), то работает. &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;Т.е. клиент, почему-то не хочет работать с сокетом вне своей папки. &lt;br&gt;&lt;br&gt;Дело не в папке.&lt;br&gt;Есть 2 путЯ решения проблемы (если не втыкать зачем нужен путь &quot;/tmp/sock...bla bla&quot;).&lt;br&gt;1) поменять местами строки с объявлением переменных &lt;br&gt; struct sockaddr srvr_name, rcvr_name;&lt;br&gt;   &lt;br&gt;и &lt;br&gt;  int   sock;&lt;br&gt;&lt;br&gt;2) уменьщить &quot;путь_до_сокета&quot; ака   SOCK_NAME до 14 байт&lt;br&gt;&lt;br&gt;первый способ сработает или нет  в зависимости от  архитектуры и (или) компилятора.(не правильный)&lt;br&gt;&lt;br&gt;второй способ надеется на то, что sizeof(sockaddr) = 16&lt;br&gt;т.е. &lt;br&gt;sizeof(srvr_name.sa_family) = 2 (т.е. короткое целое без знака)&lt;br&gt;и sizeof(srvr_name.sa_data) = 14 (14 буковок)&lt;br&gt;</description>
</item>

<item>
    <title>Файловые сокеты (Mariupolets)</title>
    <link>https://opennet.me/openforum/vsluhforumID9/7209.html#1</link>
    <pubDate>Sun, 24 Feb 2008 00:52:18 GMT</pubDate>
    <description>Кстати, если скопировать клиента в /tmp и там запустить (а в самом клиенте название сокета без путей конечно), то работает.&lt;br&gt;&lt;br&gt;Т.е. клиент, почему-то не хочет работать с сокетом вне своей папки.&lt;br&gt;&lt;br&gt;&lt;br&gt;</description>
</item>

</channel>
</rss>
