<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: Ламерский вопрос по htonl.</title>
    <link>https://opennet.ru/openforum/vsluhforumID9/5436.html</link>
    <description>Привет all! &lt;br&gt;Разбираю тут код по работе с сокетами на C++ под linux. Встретился кусочек:&lt;br&gt;addr.sin_port = htons(3425); //С этим все ясно. Порт в открытом виде.&lt;br&gt;addr.sin_addr.s_addr = htonl(INADDR_LOOPBACK); //Тут не понятно&lt;br&gt;connect (sock, (struct sockaddr *) &amp;addr, sizeof(addr)) //Тут тоже...&lt;br&gt;&lt;br&gt;Так вот, у меня 2 ламерских вопроса по этому небольшому кусочку.&lt;br&gt;1) htonl(INADDR_LOOPBACK) я понимаю что INADDR_LOOPBACK это петля 127.0.0.1, но когда я попытлася передать какойнить свой IP, например 10.0.0.1, то столкнулся с проблемой... Как мне через char * передать в эту htonl свои данные? Я понимаю что функция ест uint32_t, но я к сожалению еще ни разу не работал с этим типом, а тем более как мне из юзерских данных, переданных в мою функцию через &quot;char *USER_IP&quot;, скормить их htonl&apos;у или лучше сразу сразу конвертировать в понятную циферку addr.sin_addr.s_addr&apos;a...????&lt;br&gt;2) Очередной заковырк с указателями для новичка: (struct sockaddr *) &amp;addr.&lt;br&gt;Не очень понимаю что сие произведение делает... Если можно, поясни,</description>

<item>
    <title>Ламерский вопрос по htonl. (Buggs)</title>
    <link>https://opennet.ru/openforum/vsluhforumID9/5436.html#8</link>
    <pubDate>Sun, 03 Apr 2011 15:15:59 GMT</pubDate>
    <description>&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;2) Очередной заковырк с указателями для новичка: (struct sockaddr *) &amp;addr.&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;Не очень понимаю что сие произведение делает... Если можно, поясни, all...&lt;br&gt;&amp;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;а представляются 32 битным числом например loopback 0x7f000001 а htonl нужен &lt;br&gt;&amp;gt;&amp;gt;для того, чтобы перевести порядок следования байт из машинного в сетевой.&lt;br&gt;&amp;gt;&amp;gt;так что если хочешь использовать 10.0.0.1 используй число 0x10000001 &lt;br&gt;&amp;gt; Спасибо огромное!&lt;br&gt;&lt;br&gt;Не верно  аргумент htonl long int 10.0.0.1 = 10*256^3+0*256^2+0*256+1=0xA000001&lt;br&gt;&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>Ламерский вопрос по htonl. (gyn61)</title>
    <link>https://opennet.ru/openforum/vsluhforumID9/5436.html#7</link>
    <pubDate>Sat, 20 May 2006 20:12:18 GMT</pubDate>
    <description>Запомните раз и навсегда: C и C++ это разные языки программирования. Пусть ихняя похожесть не вводит вас в заблуждение.&lt;br&gt;&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>Ламерский вопрос по htonl. (ufobject)</title>
    <link>https://opennet.ru/openforum/vsluhforumID9/5436.html#6</link>
    <pubDate>Sat, 20 May 2006 16:47:27 GMT</pubDate>
    <description>&lt;br&gt;Еще маленький вопрос.... &lt;br&gt;&amp;gt;&amp;gt;connect (sock, (struct sockaddr *) &amp;addr, sizeof(addr))&lt;br&gt;&amp;gt; &amp;addr - адрес addr, (struct sockaddr *) приведение к данному указетелю.&lt;br&gt;Неужели никак проще нельзя &quot;(struct sockaddr *) &amp;addr&quot; заменить? И почему в C компилится и работает просто &quot;addr&quot;, а в C++ надо такой вираж выделывать?</description>
</item>

<item>
    <title>Ламерский вопрос по htonl. (ufobject)</title>
    <link>https://opennet.ru/openforum/vsluhforumID9/5436.html#5</link>
    <pubDate>Sat, 20 May 2006 16:46:21 GMT</pubDate>
    <description>&lt;br&gt;Еще маленький вопрос.... &lt;br&gt;&amp;gt;&amp;gt;connect (sock, (struct sockaddr *) &amp;addr, sizeof(addr))&lt;br&gt;&amp;gt; &amp;addr - адрес addr, (struct sockaddr *) приведение к данному указетелю.&lt;br&gt;Неужели никак проще нельзя &quot;(struct sockaddr *) &amp;addr&quot; заменить? И почему в C компилится и работает просто &quot;addr&quot;, а в C++ надо такой</description>
</item>

<item>
    <title>Ламерский вопрос по htonl. (ufobject)</title>
    <link>https://opennet.ru/openforum/vsluhforumID9/5436.html#4</link>
    <pubDate>Sat, 20 May 2006 16:42:18 GMT</pubDate>
    <description>&amp;gt;&amp;gt;Привет all! &lt;br&gt;&amp;gt;&amp;gt;Разбираю тут код по работе с сокетами на C++ под linux. Встретился &lt;br&gt;&amp;gt;&amp;gt;кусочек: &lt;br&gt;&amp;gt;&amp;gt;addr.sin_port = htons(3425); //С этим все ясно. Порт в открытом виде. &lt;br&gt;&amp;gt;&amp;gt;addr.sin_addr.s_addr = htonl(INADDR_LOOPBACK); //Тут не понятно &lt;br&gt;&amp;gt;&amp;gt;connect (sock, (struct sockaddr *) &amp;addr, sizeof(addr)) //Тут тоже... &lt;br&gt;&amp;gt;&amp;gt;&lt;br&gt;&amp;gt;&amp;gt;Так вот, у меня 2 ламерских вопроса по этому небольшому кусочку. &lt;br&gt;&amp;gt;&amp;gt;1) htonl(INADDR_LOOPBACK) я понимаю что INADDR_LOOPBACK это петля 127.0.0.1, но когда я &lt;br&gt;&amp;gt;&amp;gt;попытлася передать какойнить свой IP, например 10.0.0.1, то столкнулся с проблемой... &lt;br&gt;&amp;gt;&amp;gt;Как мне через char * передать в эту htonl свои данные? &lt;br&gt;&amp;gt;&amp;gt;Я понимаю что функция ест uint32_t, но я к сожалению еще &lt;br&gt;&amp;gt;&amp;gt;ни разу не работал с этим типом, а тем более как &lt;br&gt;&amp;gt;&amp;gt;мне из юзерских данных, переданных в мою функцию через &quot;char *USER_IP&quot;, &lt;br&gt;&amp;gt;&amp;gt;скормить их htonl&apos;у или лучше сразу сразу конвертировать в понятную циферку &lt;br&gt;&amp;gt;&amp;gt;addr.sin_addr.s_addr&apos;a...???? &lt;br&gt;&amp;gt;&amp;gt;2) Очередной заковырк с указателями для новичка: (struct sockaddr *) &amp;addr. &lt;br&gt;&amp;gt;&amp;gt;Не очень</description>
</item>

<item>
    <title>Ламерский вопрос по htonl. (Resident)</title>
    <link>https://opennet.ru/openforum/vsluhforumID9/5436.html#3</link>
    <pubDate>Fri, 19 May 2006 17:45:52 GMT</pubDate>
    <description>#ifndef _NO_SPAM_&lt;br&gt;&lt;br&gt;&amp;gt;K&amp;R &quot;Язык программирования Си&quot; ОБЯЗАТЕЛЬНО. &lt;br&gt;&lt;br&gt;Имхо, достаточно Страуструппа 3-ие издание, там и про С хоть и коротко, но зато очень многое открывает, в том числе и то, чего нет у КР. :)&lt;br&gt;&lt;br&gt;#endif&lt;br&gt;&lt;br&gt;Bedjee&apos;s guid to network programing читали (за написание имени не ручаюсь, но читается так)? Если нет, то советую почитать, даже видел целый курс в вузе, построенный на этом гиде, семестр студентам мозг мучают тем, что Биджи уложил в 2 часа чтения, при чем просто и ясно.</description>
</item>

<item>
    <title>Ламерский вопрос по htonl. (Grey)</title>
    <link>https://opennet.ru/openforum/vsluhforumID9/5436.html#2</link>
    <pubDate>Fri, 19 May 2006 15:58:00 GMT</pubDate>
    <description>&amp;gt;Привет all! &lt;br&gt;&amp;gt;Разбираю тут код по работе с сокетами на C++ под linux. Встретился &lt;br&gt;&amp;gt;кусочек: &lt;br&gt;&amp;gt;addr.sin_port = htons(3425); //С этим все ясно. Порт в открытом виде. &lt;br&gt;&amp;gt;addr.sin_addr.s_addr = htonl(INADDR_LOOPBACK); //Тут не понятно &lt;br&gt;&amp;gt;connect (sock, (struct sockaddr *) &amp;addr, sizeof(addr)) //Тут тоже... &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;Так вот, у меня 2 ламерских вопроса по этому небольшому кусочку. &lt;br&gt;&amp;gt;1) htonl(INADDR_LOOPBACK) я понимаю что INADDR_LOOPBACK это петля 127.0.0.1, но когда я &lt;br&gt;&amp;gt;попытлася передать какойнить свой IP, например 10.0.0.1, то столкнулся с проблемой... &lt;br&gt;&amp;gt;Как мне через char * передать в эту htonl свои данные? &lt;br&gt;&amp;gt;Я понимаю что функция ест uint32_t, но я к сожалению еще &lt;br&gt;&amp;gt;ни разу не работал с этим типом, а тем более как &lt;br&gt;&amp;gt;мне из юзерских данных, переданных в мою функцию через &quot;char *USER_IP&quot;, &lt;br&gt;&amp;gt;скормить их htonl&apos;у или лучше сразу сразу конвертировать в понятную циферку &lt;br&gt;&amp;gt;addr.sin_addr.s_addr&apos;a...???? &lt;br&gt;&amp;gt;2) Очередной заковырк с указателями для новичка: (struct sockaddr *) &amp;addr. &lt;br&gt;&amp;gt;Не очень понимаю что сие п</description>
</item>

<item>
    <title>Ламерский вопрос по htonl. (chip)</title>
    <link>https://opennet.ru/openforum/vsluhforumID9/5436.html#1</link>
    <pubDate>Fri, 19 May 2006 13:07:55 GMT</pubDate>
    <description>&amp;gt;Привет all! &lt;br&gt;&amp;gt;Разбираю тут код по работе с сокетами на C++ под linux. Встретился &lt;br&gt;&amp;gt;кусочек: &lt;br&gt;&amp;gt;addr.sin_port = htons(3425); //С этим все ясно. Порт в открытом виде. &lt;br&gt;&amp;gt;addr.sin_addr.s_addr = htonl(INADDR_LOOPBACK); //Тут не понятно &lt;br&gt;&amp;gt;connect (sock, (struct sockaddr *) &amp;addr, sizeof(addr)) //Тут тоже... &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;Так вот, у меня 2 ламерских вопроса по этому небольшому кусочку. &lt;br&gt;&amp;gt;1) htonl(INADDR_LOOPBACK) я понимаю что INADDR_LOOPBACK это петля 127.0.0.1,&lt;br&gt;&lt;br&gt;Feel the difference:&lt;br&gt;&lt;br&gt;#define      INADDR_LOOPBACK         0x7f000001      /* 127.0.0.1   */&lt;br&gt;&lt;br&gt;inet_addr(&quot;127.0.0.1&quot;)&lt;br&gt;&lt;br&gt;&amp;gt;2) Очередной заковырк с указателями для новичка: (struct sockaddr *) &amp;addr. &lt;br&gt;&amp;gt;Не очень понимаю что сие произведение делает... Если можно, поясни, all... &lt;br&gt;&amp;gt;Заранее огромное спасибо за помощь!!! &lt;br&gt;&lt;br&gt;K&amp;R &quot;Язык программирования Си&quot; ОБЯЗАТЕЛЬНО.&lt;br&gt;&lt;br&gt;&amp;addr - адрес addr, (struct sockaddr *) приведение к данному указетелю.&lt;br&gt;</description>
</item>

</channel>
</rss>
