<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: htons</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7160.html</link>
    <description>Здравствуйте!&lt;br&gt;&lt;br&gt;Есть заголовок пакета следующей структуры:&lt;br&gt;1-й байт - тип протокола = 11&lt;br&gt;2-й байт - тип пакета = 1&lt;br&gt;3-4 длина пакета&lt;br&gt;&lt;br&gt;Все поля идут в сетевом представлении.&lt;br&gt;&lt;br&gt;Как сделать поля в сетовом представлении?&lt;br&gt;&lt;br&gt;Мой вариант:&lt;br&gt;char head&#091;4&#093; = &#123;htons(11),htons(1),htons(0),htons(0)&#125;; // 3-й 4-й пока не важны&lt;br&gt;&lt;br&gt;const size_t PACKET_SIZE=8;&lt;br&gt;char* packet = new char&#091;PACKET_SIZE&#093;;&lt;br&gt;&lt;br&gt;memcpy(packet,head,sizeof(head));&lt;br&gt;&lt;br&gt;for(unsigned int i=0; i&amp;lt;PACKET_SIZE;i++)&lt;br&gt;cout &amp;lt;&amp;lt; ntohs((int)packet&#091;i&#093;); // Здесь почему-то 00000..&lt;br&gt;&lt;br&gt;delete packet;&lt;br&gt;</description>

<item>
    <title>htons (Fisher)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7160.html#11</link>
    <pubDate>Mon, 11 Feb 2008 07:35:23 GMT</pubDate>
    <description>&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt;send худо бедно работать будет. &lt;br&gt;&amp;gt;а вот recv, он обладает такой особенностью что возвращает данные которые пришли, &lt;br&gt;&amp;gt;и есть большая вероятность того что вернется не полный буфер в &lt;br&gt;&amp;gt;recv, посланный в send. &lt;br&gt;&amp;gt;таким образом, надо будет вызывать recv в цикле. до тех пор, пока &lt;br&gt;&amp;gt;не примется весь необходимый буфер. &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;можно сделать это используя флаг MSG_WAITALL &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;ну а дальше сам пофантазируй. &lt;br&gt;&lt;br&gt;Я использую send и recv вместо write read, как раз из-за того, что есть возможность установить флаги. &lt;br&gt;Спасибо!&lt;br&gt;</description>
</item>

<item>
    <title>htons (NuINu)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7160.html#10</link>
    <pubDate>Mon, 11 Feb 2008 06:59:46 GMT</pubDate>
    <description>&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;&lt;br&gt;&amp;gt;Тогда, как правильно? &lt;br&gt;&lt;br&gt;кхм. все зависит от того чего ты хочешь получить.&lt;br&gt;&lt;br&gt;send худо бедно работать будет.&lt;br&gt;а вот recv, он обладает такой особенностью что возвращает данные которые пришли, и есть большая вероятность того что вернется не полный буфер в recv, посланный в send.&lt;br&gt;таким образом, надо будет вызывать recv в цикле. до тех пор, пока не примется весь необходимый буфер.&lt;br&gt;&lt;br&gt;можно сделать это используя флаг MSG_WAITALL&lt;br&gt;&lt;br&gt;ну а дальше сам пофантазируй.&lt;br&gt;</description>
</item>

<item>
    <title>htons (Fisher)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7160.html#9</link>
    <pubDate>Fri, 08 Feb 2008 07:47:31 GMT</pubDate>
    <description>&amp;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;</description>
</item>

<item>
    <title>htons (NuINu)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7160.html#8</link>
    <pubDate>Fri, 08 Feb 2008 07:28:17 GMT</pubDate>
    <description>&amp;gt;всё верно &lt;br&gt;&lt;br&gt;ага, но если это и будет работать, то с большими глюками :)&lt;br&gt;</description>
</item>

<item>
    <title>htons (jd2)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7160.html#7</link>
    <pubDate>Fri, 08 Feb 2008 00:55:51 GMT</pubDate>
    <description>всё верно&lt;br&gt;</description>
</item>

<item>
    <title>htons (Fisher)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7160.html#6</link>
    <pubDate>Wed, 06 Feb 2008 17:12:26 GMT</pubDate>
    <description>&amp;gt;Как вот эту структуру pkt передать в сокет, т.е. меня интересут только &lt;br&gt;&amp;gt;функция send или write &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;ssize_t send(int s, const void *msg, size_t len, int flags); &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;Что нужно подставить вместо msg и len? &lt;br&gt;&lt;br&gt;Видимо, что-то вроде этого:&lt;br&gt;&lt;br&gt;struct my_struct data; &lt;br&gt;// ... do something with struct &lt;br&gt;send(my_socket, (char*)(&amp;data), sizeof(my_struct), 0); &lt;br&gt;&lt;br&gt;The receiver should do something like: &lt;br&gt;struct my_struct remote_data; &lt;br&gt;recv(my_socket, (char*)&amp;remote_data, sizeof(my_struct), 0); &lt;br&gt;</description>
</item>

<item>
    <title>htons (Fisher)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7160.html#5</link>
    <pubDate>Wed, 06 Feb 2008 13:10:40 GMT</pubDate>
    <description>Огромное  Вам Спасибо!&lt;br&gt;Если позволите еще вопрос:&lt;br&gt;&lt;br&gt;Как вот эту структуру pkt передать в сокет, т.е. меня интересут только функция send или write&lt;br&gt;&lt;br&gt;ssize_t send(int s, const void *msg, size_t len, int flags);&lt;br&gt;&lt;br&gt;Что нужно подставить вместо msg и len?&lt;br&gt;</description>
</item>

<item>
    <title>htons (NuINu)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7160.html#4</link>
    <pubDate>Wed, 06 Feb 2008 11:50:31 GMT</pubDate>
    <description>&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;Так? &lt;br&gt;&amp;gt;struct Header &lt;br&gt;&amp;gt;&#123; &lt;br&gt;&amp;gt;u_char* type_protocol; //тип протокола &lt;br&gt;&amp;gt;u_char* type_packet; // тип пакета &lt;br&gt;&amp;gt;u_char* llength; // длина пакета. &lt;br&gt;&amp;gt;u_char* hlength; &lt;br&gt;&amp;gt;&#125; &lt;br&gt;&amp;gt;&lt;br&gt;&lt;br&gt;неа, смотри elvenic все написал.&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>htons (Fisher)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7160.html#3</link>
    <pubDate>Wed, 06 Feb 2008 11:18:38 GMT</pubDate>
    <description>&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt;&amp;gt;Есть заголовок пакета следующей структуры: &lt;br&gt;&amp;gt;&amp;gt;1-й байт - тип протокола = 11 &lt;br&gt;&amp;gt;&amp;gt;2-й байт - тип пакета = 1 &lt;br&gt;&amp;gt;&amp;gt;3-4 длина пакета &lt;br&gt;&amp;gt;&amp;gt;char head&#091;4&#093; = &#123;htons(11),htons(1),htons(0),htons(0)&#125;; // 3-й 4-й пока не важны &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;ага, ты посмотри сначала на определение функции! &lt;br&gt;&amp;gt;uint16_t htons(uint16_t hostshort); &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;ДВА байта! чего собственно ты там преобразовываешь? &lt;br&gt;&lt;br&gt;Спасибо! Я это видел (man htons).&lt;br&gt;Просто я плохо представляю как это должно выглядеть.&lt;br&gt;&lt;br&gt;Если можете, то подскажите пожалуйста.&lt;br&gt;&lt;br&gt;Есть структура Header:&lt;br&gt;&lt;br&gt;Так?&lt;br&gt;struct Header&lt;br&gt;&#123;&lt;br&gt;u_char* type_protocol; //тип протокола&lt;br&gt;u_char* type_packet; // тип пакета&lt;br&gt;u_char* llength; // длина пакета.&lt;br&gt;u_char* hlength;&lt;br&gt;&#125;&lt;br&gt;&lt;br&gt;//Длина пакета 3-4 байт&lt;br&gt;Зачем 3-4 байт? Старший, младший?&lt;br&gt;&lt;br&gt;int main()&lt;br&gt;&#123;&lt;br&gt;Header* pheader = new Header;&lt;br&gt;&lt;br&gt;Длина известна путь она = LEN&lt;br&gt;&lt;br&gt;1) далше надо сделать поля заголовка в сетевом представлении&lt;br&gt;2) Прикрепить тело пакета&lt;br&gt;2) Затем этот пакет (header+body) послать с помощью send() в сокет&lt;br&gt;delete pheade</description>
</item>

</channel>
</rss>
