<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=276220&amp;view=findpost&amp;p=2302229</guid>
        <pubDate>Wed, 01 Jul 2009 08:56:32 +0000</pubDate>
        <title>Сетевая обработка</title>
        <link>https://forum.sources.ru/index.php?showtopic=276220&amp;view=findpost&amp;p=2302229</link>
        <description><![CDATA[ЫукпШ: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=276220&view=findpost&p=2301975'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>zss &#064; <time class="tag-quote__quoted-time" datetime="2009-06-30T23:17:06+04:00">30.06.09, 19:17</time></span><div class='quote '>А исходя из этого - можно упростить как-нибудь ?</div></div><br>
Можно смастерить обьект FiFo - контейнер для сообшений.<br>
 Обьект должен быть потокобезопасным.<br>
 Поток с большим приоритетом принимает данные и заполняет FiFo.<br>
 Другой рабочий поток извлекает Месаджы из FiFo и занимается<br>
 их отправкой.<br>
 Но независимо от того, где будут храниться данные аппаратуры<br>
 (на диске или в памяти) такая схема может спасти только<br>
 от пиковых перегрузок.]]></description>
        <author>ЫукпШ</author>
        <category>C/C++: Сетевое программирование</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=276220&amp;view=findpost&amp;p=2301984</guid>
        <pubDate>Tue, 30 Jun 2009 19:30:40 +0000</pubDate>
        <title>Сетевая обработка</title>
        <link>https://forum.sources.ru/index.php?showtopic=276220&amp;view=findpost&amp;p=2301984</link>
        <description><![CDATA[zss: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=276220&view=findpost&p=2301981'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>albom &#064; <time class="tag-quote__quoted-time" datetime="2009-06-30T19:27:13+00:00">30.06.09, 19:27</time></span><div class='quote '>Вторая часть вообще получается простой, разве что тривиальную синхронизацию можно написать. </div></div><br>
внутренний буфер меня смущает...<br>
<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=276220&view=findpost&p=2301981'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>albom &#064; <time class="tag-quote__quoted-time" datetime="2009-06-30T19:27:13+00:00">30.06.09, 19:27</time></span><div class='quote '>Ну разделяешь свой неделимые сообщения неким разделителем, или перед каждым неделимым сообщением передаешь его размер. А на принимающей стороне пишешь читателя, который читает данные из сокета и передает данные дальше в твою программу только порциями, ну а порции он определять сможет или по разделителям или зная размер следующих данных.<br>
</div></div><br>
понятно]]></description>
        <author>zss</author>
        <category>C/C++: Сетевое программирование</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=276220&amp;view=findpost&amp;p=2301981</guid>
        <pubDate>Tue, 30 Jun 2009 19:27:13 +0000</pubDate>
        <title>Сетевая обработка</title>
        <link>https://forum.sources.ru/index.php?showtopic=276220&amp;view=findpost&amp;p=2301981</link>
        <description><![CDATA[albom: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=276220&view=findpost&p=2301975'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>zss &#064; <time class="tag-quote__quoted-time" datetime="2009-06-30T19:17:06+00:00">30.06.09, 19:17</time></span><div class='quote '>а что это даст. Например, если данные потерялись, что tcp сам перезапросит их.<br>
Тут главное чтоб не было так, что я получил часть, а при попытке получения оставшейся произошел обрыв, например.</div></div>Ну разделяешь свой неделимые сообщения неким разделителем, или перед каждым неделимым сообщением передаешь его размер. А на принимающей стороне пишешь читателя, который читает данные из сокета и  передает данные дальше в твою программу только порциями, ну а порции он определять сможет или по разделителям или зная размер следующих данных.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=276220&view=findpost&p=2301975'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>zss &#064; <time class="tag-quote__quoted-time" datetime="2009-06-30T19:17:06+00:00">30.06.09, 19:17</time></span><div class='quote '>А исходя из этого - можно упростить как-нибудь ?</div></div>Вот мне и кажется, что тут проще сделать две нити (или процесса). Один делает важную часть (получает данные и пишет их), а второй просто читает данные (да хоть прямо с диска и читает) и передает их в сеть. Вторая часть вообще получается простой, разве что тривиальную синхронизацию можно написать.]]></description>
        <author>albom</author>
        <category>C/C++: Сетевое программирование</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=276220&amp;view=findpost&amp;p=2301975</guid>
        <pubDate>Tue, 30 Jun 2009 19:17:06 +0000</pubDate>
        <title>Сетевая обработка</title>
        <link>https://forum.sources.ru/index.php?showtopic=276220&amp;view=findpost&amp;p=2301975</link>
        <description><![CDATA[zss: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=276220&view=findpost&p=2301962'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>albom &#064; <time class="tag-quote__quoted-time" datetime="2009-06-30T18:49:20+00:00">30.06.09, 18:49</time></span><div class='quote '>то при очередной попытке передачи send будет заблокирован до тех пор, пока не будут переданы уже накопленные данные, и таким образом будут освобождены буферы.</div></div><br>
этого я и боялся<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=276220&view=findpost&p=2301962'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>albom &#064; <time class="tag-quote__quoted-time" datetime="2009-06-30T18:49:20+00:00">30.06.09, 18:49</time></span><div class='quote '>Реализовать нужный протокол вручную.</div></div><br>
а что это даст. Например, если данные потерялись, что tcp сам перезапросит их.<br>
Тут главное чтоб не было так, что я получил часть, а при попытке получения оставшейся произошел обрыв, например.<br>
<br>
<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=276220&view=findpost&p=2301962'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>albom &#064; <time class="tag-quote__quoted-time" datetime="2009-06-30T18:49:20+00:00">30.06.09, 18:49</time></span><div class='quote '>Ну или udp-дейтаграмы слать, если это допустимо. </div></div><br>
размер данных более 1500 - не получится.<br>
<br>
З.Ы. <br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=276220&view=findpost&p=2301957'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>zss &#064; <time class="tag-quote__quoted-time" datetime="2009-06-30T18:41:10+00:00">30.06.09, 18:41</time></span><div class='quote '>у тогда нужен промежуточный буфер, который не хотелось заводить.<br>
Мне не критичны потери при передачи по сети. Данные можно и терять (важно лишь сохранение на винт).<br>
Из этого и хотелось реализовать как можно проще... </div></div><br>
А исходя из этого - можно упростить как-нибудь ?]]></description>
        <author>zss</author>
        <category>C/C++: Сетевое программирование</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=276220&amp;view=findpost&amp;p=2301962</guid>
        <pubDate>Tue, 30 Jun 2009 18:49:20 +0000</pubDate>
        <title>Сетевая обработка</title>
        <link>https://forum.sources.ru/index.php?showtopic=276220&amp;view=findpost&amp;p=2301962</link>
        <description><![CDATA[albom: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=276220&view=findpost&p=2301957'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>zss &#064; <time class="tag-quote__quoted-time" datetime="2009-06-30T18:41:10+00:00">30.06.09, 18:41</time></span><div class='quote '>а как это проявится ?</div></div>Передающая сторона уменьшит скорость передачи.<br>
С точки зрения приложения это всё прозрачно, всем этим будет заниматься ОС, сами данные будут накапливаться в буферах на передающей стороне, а когда они будут исчерпаны, то при очередной попытке передачи send будет заблокирован до тех пор, пока не будут  переданы уже накопленные данные, и таким образом будут освобождены буферы.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=276220&view=findpost&p=2301957'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>zss &#064; <time class="tag-quote__quoted-time" datetime="2009-06-30T18:41:10+00:00">30.06.09, 18:41</time></span><div class='quote '>это точно ?</div></div>в tcp/ip - да<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=276220&view=findpost&p=2301957'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>zss &#064; <time class="tag-quote__quoted-time" datetime="2009-06-30T18:41:10+00:00">30.06.09, 18:41</time></span><div class='quote '>Еще вопрос - можно ли каким образом гарантировать транзакцию. Тоесть ли передано все - либо ничего ?</div></div>Реализовать нужный протокол вручную.<br>
Ну или udp-дейтаграмы слать, если это допустимо.]]></description>
        <author>albom</author>
        <category>C/C++: Сетевое программирование</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=276220&amp;view=findpost&amp;p=2301957</guid>
        <pubDate>Tue, 30 Jun 2009 18:41:10 +0000</pubDate>
        <title>Сетевая обработка</title>
        <link>https://forum.sources.ru/index.php?showtopic=276220&amp;view=findpost&amp;p=2301957</link>
        <description><![CDATA[zss: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=276220&view=findpost&p=2301934'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>albom &#064; <time class="tag-quote__quoted-time" datetime="2009-06-30T17:36:04+00:00">30.06.09, 17:36</time></span><div class='quote '>стандартная ситуация, которая просто сообщает передающей стророне о том, что нужно уменьшить скорость передачи данных.</div></div><br>
а как это проявится ?<br>
<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=276220&view=findpost&p=2301934'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>albom &#064; <time class="tag-quote__quoted-time" datetime="2009-06-30T17:36:04+00:00">30.06.09, 17:36</time></span><div class='quote '>Но на этом этапе данные не теряются, в смысле переполнение буфера на принимающей стороне</div></div><br>
это точно ?<br>
<br>
<br>
З.Ы. Еще вопрос - можно ли каким образом гарантировать транзакцию. Тоесть ли передано все - либо ничего ? <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2009-06-30T18:42:47+00:00">30.06.09, 18:42</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=276220&view=findpost&p=2301934'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>albom &#064; <time class="tag-quote__quoted-time" datetime="2009-06-30T17:36:04+00:00">30.06.09, 17:36</time></span><div class='quote '>Напрашивается вариант сделать два потока: один получает даные и надежно сохраняет из на диск, второй уже передает данные для обработки со своей скоростью. </div></div><br>
ну тогда нужен промежуточный буфер, который не хотелось заводить.<br>
Мне не критичны потери при передачи по сети. Данные можно и терять (важно лишь сохранение на винт).<br>
Из этого и хотелось реализовать как можно проще...]]></description>
        <author>zss</author>
        <category>C/C++: Сетевое программирование</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=276220&amp;view=findpost&amp;p=2301934</guid>
        <pubDate>Tue, 30 Jun 2009 17:36:04 +0000</pubDate>
        <title>Сетевая обработка</title>
        <link>https://forum.sources.ru/index.php?showtopic=276220&amp;view=findpost&amp;p=2301934</link>
        <description><![CDATA[albom: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=276220&view=findpost&p=2301750'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>zss &#064; <time class="tag-quote__quoted-time" datetime="2009-06-30T09:46:00+00:00">30.06.09, 09:46</time></span><div class='quote '>Но вот если после подключения сервер не успевает обрабатывать данные, то что произойдет<br>
1. Переполнится буфер сервера ?<br>
2. Клиент повиснет на send ?</div></div>Если сокет обычный, не блокирующий, то произойдет сначала 1, затем 2. Но на этом этапе данные не теряются, в смысле переполнение буфера на принимающей стороне - стандартная ситуация, которая просто сообщает передающей стророне о том, что нужно уменьшить скорость передачи данных.<br>
<br>
<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=276220&view=findpost&p=2301888'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>zss &#064; <time class="tag-quote__quoted-time" datetime="2009-06-30T13:07:24+00:00">30.06.09, 13:07</time></span><div class='quote '>То есть если все-таки клиент будет заблокирован на send, то он потеряет данные, которые должен постоянно вычитывать из устройства и сохранять на винт, а уже только потом передавать по сети</div></div>Напрашивается вариант сделать два потока: один получает даные и надежно сохраняет из на диск, второй уже передает данные для обработки со своей скоростью. <br>
Ну либо делай неблокирующие сокеты и сам следи за временем выполнения  сетевых операций, но это сложнее, да и наверно не нужно.]]></description>
        <author>albom</author>
        <category>C/C++: Сетевое программирование</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=276220&amp;view=findpost&amp;p=2301888</guid>
        <pubDate>Tue, 30 Jun 2009 13:07:24 +0000</pubDate>
        <title>Сетевая обработка</title>
        <link>https://forum.sources.ru/index.php?showtopic=276220&amp;view=findpost&amp;p=2301888</link>
        <description><![CDATA[zss: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=276220&view=findpost&p=2301852'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>ЫукпШ &#064; <time class="tag-quote__quoted-time" datetime="2009-06-30T12:21:27+00:00">30.06.09, 12:21</time></span><div class='quote '>А если перевести сокет клиента в неблокирующий режим ?</div></div><br>
так прежде чем это делать, нужно понять где может быть проблема - на стороне сервера или клиента.<br>
<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=276220&view=findpost&p=2301852'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>ЫукпШ &#064; <time class="tag-quote__quoted-time" datetime="2009-06-30T12:21:27+00:00">30.06.09, 12:21</time></span><div class='quote '>Впрочем, потеря данных все равно возможна.<br>
Если в бассейн втекает больше чем вытекает, то рано<br>
или поздно польется через край.. </div></div><br>
меня волнует не потеря со стороны сервера, а потеря со стороны клиенты. То есть если все-таки клиент будет заблокирован на send, то он потеряет данные, которые должен постоянно вычитывать из устройства и сохранять на винт, а уже только потом передавать по сети]]></description>
        <author>zss</author>
        <category>C/C++: Сетевое программирование</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=276220&amp;view=findpost&amp;p=2301852</guid>
        <pubDate>Tue, 30 Jun 2009 12:21:27 +0000</pubDate>
        <title>Сетевая обработка</title>
        <link>https://forum.sources.ru/index.php?showtopic=276220&amp;view=findpost&amp;p=2301852</link>
        <description><![CDATA[ЫукпШ: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=276220&view=findpost&p=2301750'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>zss &#064; <time class="tag-quote__quoted-time" datetime="2009-06-30T09:46:00+00:00">30.06.09, 09:46</time></span><div class='quote '>Меня в данные момент больше интерисует сторона клиента. Он не должен виснуть, иначе пойдет потеря данных.</div></div><br>
А если перевести сокет клиента в неблокирующий режим ?<br>
<br>
 Впрочем, потеря данных все равно возможна.<br>
 Если в бассейн втекает больше чем вытекает, то рано<br>
 или поздно польется через край..]]></description>
        <author>ЫукпШ</author>
        <category>C/C++: Сетевое программирование</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=276220&amp;view=findpost&amp;p=2301750</guid>
        <pubDate>Tue, 30 Jun 2009 09:46:00 +0000</pubDate>
        <title>Сетевая обработка</title>
        <link>https://forum.sources.ru/index.php?showtopic=276220&amp;view=findpost&amp;p=2301750</link>
        <description><![CDATA[zss: Система состоит из сервера и клиента. Клиент подключаясь к серверу гонит ему поток на обработку.<br>В данный момент передача данных синхронная.<br><br>Но вот если после подключения сервер не успевает обрабатывать данные, то что произойдет<br>1. Переполнится буфер сервера ?<br>2. Клиент повиснет на send ?<br><br>З.Ы. Меня в данные момент больше интерисует сторона клиента. Он не должен виснуть, иначе пойдет потеря данных.]]></description>
        <author>zss</author>
        <category>C/C++: Сетевое программирование</category>
      </item>
	
      </channel>
      </rss>
	