<?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=420910&amp;view=findpost&amp;p=3842637</guid>
        <pubDate>Mon, 07 Dec 2020 13:34:17 +0000</pubDate>
        <title>Отправка UDP -  IdUDPClient1.SendBuffer</title>
        <link>https://forum.sources.ru/index.php?showtopic=420910&amp;view=findpost&amp;p=3842637</link>
        <description><![CDATA[Gonarh: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=420910&view=findpost&p=3842634'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Mr.Delphist &#064; <time class="tag-quote__quoted-time" datetime="2020-12-07T11:34:14+00:00">07.12.20, 11:34</time></span><div class='quote '>Хотя бы примитивный: сперва DWORD с длиной ожидаемых данных (тройка в данном случае), а затем уже байты контента.</div></div><br>
У меня в примере так и есть. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2020-12-07T16:37:15+03:00">07.12.20, 13:37</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=420910&view=findpost&p=3842634'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Mr.Delphist &#064; <time class="tag-quote__quoted-time" datetime="2020-12-07T11:34:14+00:00">07.12.20, 11:34</time></span><div class='quote '>сеть - это асинхронная среда многих соединений.</div></div><br>
Данное понимание приходит лишь с опытом, когда начинаются дропы пакетов по независящим от тебя причинам, и ты судорожно начинаешь дебажить.  :D]]></description>
        <author>Gonarh</author>
        <category>Delphi: Сетевое программирование</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=420910&amp;view=findpost&amp;p=3842634</guid>
        <pubDate>Mon, 07 Dec 2020 11:34:14 +0000</pubDate>
        <title>Отправка UDP -  IdUDPClient1.SendBuffer</title>
        <link>https://forum.sources.ru/index.php?showtopic=420910&amp;view=findpost&amp;p=3842634</link>
        <description><![CDATA[Mr.Delphist: И снова здравствуйте. <br>
<br>
Никогда. <strong class='tag-b'>НИКОГДА</strong>&#33; Никогда не отправляйте в сеть сырые данные. Обязательно оборачивать их в некий протокол application-уровня. Хотя бы примитивный: сперва DWORD с длиной ожидаемых данных (тройка в данном случае), а затем уже байты контента.<br>
<br>
Причина проста: сеть - это асинхронная среда многих соединений. Поэтому её нельзя расценивать как некий pipe, где байты ходят ровно теми же порциями, как их отправили. Поэтому и появились такие решения как Protobuf и Apache Thrift (стандартизованные протоколы-сериализаторы для произвольных структур данных).]]></description>
        <author>Mr.Delphist</author>
        <category>Delphi: Сетевое программирование</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=420910&amp;view=findpost&amp;p=3842506</guid>
        <pubDate>Mon, 30 Nov 2020 16:15:07 +0000</pubDate>
        <title>Отправка UDP -  IdUDPClient1.SendBuffer</title>
        <link>https://forum.sources.ru/index.php?showtopic=420910&amp;view=findpost&amp;p=3842506</link>
        <description><![CDATA[Gonarh: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=420910&view=findpost&p=3842486'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Emmys &#064; <time class="tag-quote__quoted-time" datetime="2020-11-29T15:26:34+00:00">29.11.20, 15:26</time></span><div class='quote '><div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;tmp2:=&quot;33 32 31&quot;; //ожидается что это 321</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script></div></div><br>
Вместо 3-ёх байт срать в сеть 8? Вот кто значит ддосы устраивает.<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">type</div><div class="code_line">&nbsp;&nbsp;TBytes = array of Byte;</div><div class="code_line">...</div><div class="code_line">&nbsp;</div><div class="code_line">function StringToBytes(const Value : String): TBytes;</div><div class="code_line">var sz:Cardinal;</div><div class="code_line">&nbsp;&nbsp; &nbsp;sz_byte:TBytes;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;sz:=Length(Value);</div><div class="code_line">&nbsp;&nbsp;SetLength(sz_byte, SizeOf(sz));</div><div class="code_line">&nbsp;&nbsp;SetLength(Result, sz * SizeOf(Char) + SizeOf(sz));</div><div class="code_line">&nbsp;&nbsp;if (Length(Result) &#62; 0) and (Length(sz_byte) &#62; 0) then begin</div><div class="code_line">&nbsp;&nbsp; &nbsp;Move(sz, sz_byte[0], Length(sz_byte));</div><div class="code_line">&nbsp;&nbsp; &nbsp;Move(Value[1], Result[SizeOf(sz)], Length(Result));</div><div class="code_line">&nbsp;&nbsp; &nbsp;Move(sz_byte[0], Result[0], Length(sz_byte));</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">function BytesToString(const Value: TBytes): String;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;SetLength(Result, Length(Value) div SizeOf(Char));</div><div class="code_line">&nbsp;&nbsp;if Length(Result) &#62; 0 then Move(Value[0], Result[1], Length(Value));</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">procedure TForm1.Button1Click(Sender: TObject);</div><div class="code_line">var buf:TBytes;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;buf:=StringToBytes(&#39;321&#39;);</div><div class="code_line">&nbsp;&nbsp;client.SendBuffer(buf[0], Length(buf));</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">procedure TForm1.servUDPRead(Sender: TObject; AData: TStream;</div><div class="code_line">&nbsp;&nbsp;ABinding: TIdSocketHandle);</div><div class="code_line">var I, sz:Cardinal;</div><div class="code_line">&nbsp;&nbsp; &nbsp;data, sz_bytes:TBytes;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;sz:=0;</div><div class="code_line">&nbsp;&nbsp;SetLength(sz_bytes, SizeOf(sz));</div><div class="code_line">&nbsp;&nbsp;AData.Read(sz_bytes[0], SizeOf(sz));</div><div class="code_line">&nbsp;&nbsp;for I := 0 to Length(sz_bytes)-1 do sz := sz + Round(Power(0, I)) * sz_bytes[I];</div><div class="code_line">&nbsp;&nbsp;SetLength(data, sz);</div><div class="code_line">&nbsp;&nbsp;AData.Read(data[0], sz);</div><div class="code_line">&nbsp;&nbsp;showmessage(BytesToString(data));</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">end.</div></ol></div></div></div></div>]]></description>
        <author>Gonarh</author>
        <category>Delphi: Сетевое программирование</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=420910&amp;view=findpost&amp;p=3842496</guid>
        <pubDate>Mon, 30 Nov 2020 07:21:42 +0000</pubDate>
        <title>Отправка UDP -  IdUDPClient1.SendBuffer</title>
        <link>https://forum.sources.ru/index.php?showtopic=420910&amp;view=findpost&amp;p=3842496</link>
        <description><![CDATA[^D^ima: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=420910&view=findpost&p=3842486'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Emmys &#064; <time class="tag-quote__quoted-time" datetime="2020-11-29T15:26:34+00:00">29.11.20, 15:26</time></span><div class='quote '>tmp2:=&quot;33 32 31&quot;; //ожидается что это 321</div></div><br>
 :blink: кем ожидается?<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">var</div><div class="code_line">&nbsp;&nbsp;Buf: TIdBytes;</div><div class="code_line">Begin</div><div class="code_line">&nbsp;&nbsp;SetLength(Buf, 3);</div><div class="code_line">&nbsp;&nbsp;Buf[0] := ;</div><div class="code_line">&nbsp;&nbsp;Buf[1] := ;</div><div class="code_line">&nbsp;&nbsp;Buf[2] := ;</div><div class="code_line">&nbsp;&nbsp;IdUDPClient1.Send(Buf);</div><div class="code_line">End;</div></ol></div></div></div></div> <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2020-11-30T07:24:59+00:00">30.11.20, 07:24</time></span></span><br>
Ещё так попробуй:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">IdUDPClient1.Send(###, Indy8BitEncoding);</div></ol></div></div></div></div>]]></description>
        <author>^D^ima</author>
        <category>Delphi: Сетевое программирование</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=420910&amp;view=findpost&amp;p=3842486</guid>
        <pubDate>Sun, 29 Nov 2020 15:26:34 +0000</pubDate>
        <title>Отправка UDP -  IdUDPClient1.SendBuffer</title>
        <link>https://forum.sources.ru/index.php?showtopic=420910&amp;view=findpost&amp;p=3842486</link>
        <description><![CDATA[Emmys: Ребята добрый день&#33;<br>
Я запутался и совсем в отчаянии<br>
Раньше я отправлял просто строку по UDP но встала задача именно отправить байты т.е. не печатанные символы и тп<br>
<br>
для примера я пытаюсь отправить пока что строку из 3х символов как байты: 321<br>
<br>
делаю конвертацию по коду ниже и получаю это:<br>
<a class='tag-url' href='https://yadi.sk/i/Dgt1qMYxD0tVYg' target='_blank'>https://yadi.sk/i/Dgt1qMYxD0tVYg</a><br>
а в номальной программе которую я скачал там все корректно формируется<br>
<a class='tag-url' href='https://yadi.sk/i/7hrj-rOCIXkQCQ' target='_blank'>https://yadi.sk/i/7hrj-rOCIXkQCQ</a><br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;tmp2:=&quot;33 32 31&quot;; //ожидается что это 321</div><div class="code_line">&nbsp;&nbsp;g:=0;</div><div class="code_line">&nbsp;&nbsp;cnt:=0;</div><div class="code_line">&nbsp;&nbsp;while g&#60;=length(tmp2) do begin</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;if pos(&#39; &#39;,tmp2)&#62;0 then begin</div><div class="code_line">delete(tmp2,pos(&#39; &#39;,tmp2),1);</div><div class="code_line">inc(cnt);</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;inc(g);</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;inc(cnt);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;SetLength(buff, cnt);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;tmp2:=UDP_Server_Client_1.Edit5.Text;</div><div class="code_line">&nbsp;&nbsp;g:=0;</div><div class="code_line">&nbsp;&nbsp;cnt:=0;</div><div class="code_line">&nbsp;&nbsp;while g&#60;=length(tmp2) do begin</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;if pos(&#39; &#39;,tmp2)&#62;0 then begin</div><div class="code_line">&nbsp;&nbsp; tmp3:=tmp2;</div><div class="code_line">&nbsp;&nbsp; &nbsp;delete(tmp3,pos(&#39; &#39;,tmp3),length(tmp3));</div><div class="code_line">&nbsp;&nbsp;delete(tmp2,1,pos(&#39; &#39;,tmp2));</div><div class="code_line">&nbsp;&nbsp;tmp3:=tmp3;</div><div class="code_line">&nbsp;&nbsp; buff[cnt]:=strtoint(tmp3);</div><div class="code_line">&nbsp;&nbsp; inc(cnt);</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;inc(g);</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">tmp2:=tmp2;</div><div class="code_line">&nbsp;&nbsp; buff[cnt]:=strtoint(tmp2);</div><div class="code_line">&nbsp;&nbsp; inc(cnt);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">ёUDP_Server_Client_1.IdUDPClient1.SendBuffer(UDP_Server_Client_1.IdUDPClient1.Host,UDP_Server_Client_1.IdUDPClient1.Port,buff);</div><div class="code_line">//UDP_Server_Client_1.IdUDPClient1.Send(UDP_Server_Client_1.Edit3.Text);</div><div class="code_line">//если нужно отправить просто строку, то отравляем без изменений</div></ol></div></div></div></div>]]></description>
        <author>Emmys</author>
        <category>Delphi: Сетевое программирование</category>
      </item>
	
      </channel>
      </rss>
	