<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: Прблема при чтении из буфера TCP</title>
    <link>https://opennet.ru/openforum/vsluhforumID9/7400.html</link>
    <description>Здравствуйте!&lt;br&gt;&lt;br&gt;Написал скачивалку страниц.&lt;br&gt;На kevent, при готовности сокета на чтение делаю не блокируемый сокет и пытаюсь скачать страницу, если вкраце то так:&lt;br&gt;&lt;br&gt;setsockopt(kq_events&#091;i&#093;.ident, SOL_SOCKET, SO_RCVTIMEO, &amp;tv, sizeof(tv));&lt;br&gt;&lt;br&gt;for(;;)&lt;br&gt;&#123;&lt;br&gt;if((n = read(kq_events&#091;i&#093;.ident, readbuf, MAXLINE)) == 0)&lt;br&gt;&#123;&lt;br&gt;close(kq_events&#091;i&#093;.ident);&lt;br&gt;break;&lt;br&gt;&#125;&lt;br&gt;&lt;br&gt;if(n &amp;lt; 0)&lt;br&gt;&#123;&lt;br&gt;close(kq_events&#091;i&#093;.ident);&lt;br&gt;if(errno == EWOULDBLOCK)&lt;br&gt;&#123;&lt;br&gt;printf(&quot;TIMEOUT RCV!!!&#092;n&quot;);&lt;br&gt;&#125;&lt;br&gt;break;&lt;br&gt;&#125;&lt;br&gt;&lt;br&gt;printf(&quot;n: &#037;i&#092;n&quot;, n);&lt;br&gt;printf(&quot;readbuf: &#037;s&#092;n&quot;, readbuf);&lt;br&gt;printf(&quot;-----------------------------------------------------------&#092;n&quot;);&lt;br&gt;&lt;br&gt;bzero(&amp;readbuf, MAXLINE*sizeof(char));&lt;br&gt;&#125;&lt;br&gt;&lt;br&gt;так вот причтении получается слудующее:&lt;br&gt;&lt;br&gt;в то содержимое что а прочитал вклиниваются какието левые символы,&lt;br&gt;символы эти являются размером(в 16ти ричном формате) в байтах той части текста, которая идет после этих цифр до конца прочитанного(ну или то следуючего такого вклинивания).&lt;br&gt;Ниже скрины и при</description>

<item>
    <title>Прблема при чтении из буфера TCP (BsDr)</title>
    <link>https://opennet.ru/openforum/vsluhforumID9/7400.html#3</link>
    <pubDate>Wed, 04 Jun 2008 12:37:26 GMT</pubDate>
    <description>Все оказалось очень посто:&lt;br&gt;Виною всему вот этот вот заголовок от сервера&lt;br&gt;Transfer-Encoding: chunked&lt;br&gt;&lt;br&gt;Что бы этого не было надо указать&lt;br&gt;GET http://xxxx HTTP/1.0&lt;br&gt;вместо &lt;br&gt;GET http://xxxx HTTP/1.1&lt;br&gt;Апач сам разбивал документ на порции.&lt;br&gt;</description>
</item>

<item>
    <title>Прблема при чтении из буфера TCP (BsDr)</title>
    <link>https://opennet.ru/openforum/vsluhforumID9/7400.html#2</link>
    <pubDate>Wed, 04 Jun 2008 10:53:48 GMT</pubDate>
    <description>&amp;gt;Видимо такая сруктура пакета, начиная со второй посылке, т.к. сокет не может &lt;br&gt;&amp;gt;сразу все прочитать, если я правильно понял. &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;Т.е. readbuf должна быть струтурой: &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;1 байт - длина посланных данных(uint8_t), &lt;br&gt;&amp;gt;все остальное данные(char). &lt;br&gt;&lt;br&gt;Да, можно предположить что именно так, но есть одно но:&lt;br&gt;вот этот вот самый байт &quot;1 байт&quot; он вклинивается в середину того что я прочитал из буфера.&lt;br&gt;Т.е было бы логично что-то получить из буфера и посленим(или первым следующей посылки) байтом сообщить сколько читать еще, так нет же эта вот ерунда влазит посередине того что я прочитал из буфера..&lt;br&gt;на скринах видно что этот байт между &quot;------------------&quot;, т.е. это то что я прочитал за онду порцию из сокета.&lt;br&gt;</description>
</item>

<item>
    <title>Прблема при чтении из буфера TCP (Fisher)</title>
    <link>https://opennet.ru/openforum/vsluhforumID9/7400.html#1</link>
    <pubDate>Wed, 04 Jun 2008 09:43:31 GMT</pubDate>
    <description>Видимо такая сруктура пакета, начиная со второй посылке, т.к. сокет не может сразу все прочитать, если я правильно понял.&lt;br&gt;&lt;br&gt;Т.е. readbuf должна быть струтурой:&lt;br&gt;&lt;br&gt;1 байт - длина посланных данных(uint8_t),&lt;br&gt;все остальное данные(char).&lt;br&gt;&lt;br&gt;</description>
</item>

</channel>
</rss>
