<?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=410512&amp;view=findpost&amp;p=3711835</guid>
        <pubDate>Sat, 18 Mar 2017 13:36:58 +0000</pubDate>
        <title>Широковещательные UDP</title>
        <link>https://forum.sources.ru/index.php?showtopic=410512&amp;view=findpost&amp;p=3711835</link>
        <description><![CDATA[Oleg2004: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=410512&view=findpost&p=3711767'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Gonarh &#064; <time class="tag-quote__quoted-time" datetime="2017-03-17T21:31:09+03:00">17.03.17, 18:31</time></span><div class='quote '>Не выпустит, иначе бы интернеты тотчас легли, от кучи вирья срущего броадкастом. </div></div><br>
Да, это предпочтительное поведение. В нашей локалке было таких 2 случая...долго отлавливали.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=410512&view=findpost&p=3711767'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Gonarh &#064; <time class="tag-quote__quoted-time" datetime="2017-03-17T18:31:09+00:00">17.03.17, 18:31</time></span><div class='quote '>Адрес 239.254.1.2 мультикастовый, и прибиндить его плохая идея.</div></div><br>
Согласен, плюс за внимательность :yes: <br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Все адреса в диапазоне 224.0.0.0 – 238.255.255.255 предназначены для использования групповой передачей в масштабе Интернет. <br>
<strong class='tag-b'>Адреса вида 239.Х.Х.Х зарезервированы для внутреннего использования в частных сетях.</strong> Т.е. это специальный адрес, по сути представляющий номер группы в частной сети (т.е. не видимой из Интернета)</div></div><br>
А все мультикастовые адреса - это ВАЩЕ не IP-адреса, а просто 32-битный числовой идентификатор номера группы.<br>
Так что совсем непонятно, зачем топикстартеру этот адрес нужен.<br>
Для групповой рассылки нужен IGMP.<br>
Похожая тема уже была однажды на форуме<br>
<a class='tag-url' href='http://forum.sources.ru/index.php?showtopic=118193' target='_blank'>открывается неизвестный порт</a>]]></description>
        <author>Oleg2004</author>
        <category>C/C++: Сетевое программирование</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=410512&amp;view=findpost&amp;p=3711767</guid>
        <pubDate>Fri, 17 Mar 2017 18:31:09 +0000</pubDate>
        <title>Широковещательные UDP</title>
        <link>https://forum.sources.ru/index.php?showtopic=410512&amp;view=findpost&amp;p=3711767</link>
        <description><![CDATA[Gonarh: 1. Работать все это будет только в пределах одного широковещательного домена.<br>
2. Адрес 239.254.1.2 мультикастовый, и прибиндить его плохая идея.<br>
3. Как правильно сказал Олег, вам нужен броадкаст, то бишь слать надо на dst ip INADDR_BROADCAST, все хосты широковещательного домена получат этот пакет.<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Причем не факт,что пограничный маршрутизатор его выпустит... </div></div><br>
Не выпустит, иначе бы интернеты тотчас легли, от кучи вирья срущего броадкастом.]]></description>
        <author>Gonarh</author>
        <category>C/C++: Сетевое программирование</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=410512&amp;view=findpost&amp;p=3711619</guid>
        <pubDate>Fri, 17 Mar 2017 09:25:21 +0000</pubDate>
        <title>Широковещательные UDP</title>
        <link>https://forum.sources.ru/index.php?showtopic=410512&amp;view=findpost&amp;p=3711619</link>
        <description><![CDATA[Oleg2004: Широковещательный запрос не шлется на один сервер-комп.<br>Он шлется ВСЕМ компам данной ЛВС<br>И адрес этот 255.255.255.255 - т.е.INADDR_BROADCAST, если вы шлете только в пределах своей локалки.<br>Если вы шлете в чужую сеть, где есть комп с адресом 239.254.1.2<br>у вас должен быть адрес отсылки 239.254.1.255.<br>Причем не факт,что пограничный маршрутизатор его выпустит...]]></description>
        <author>Oleg2004</author>
        <category>C/C++: Сетевое программирование</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=410512&amp;view=findpost&amp;p=3711547</guid>
        <pubDate>Fri, 17 Mar 2017 06:21:44 +0000</pubDate>
        <title>Широковещательные UDP</title>
        <link>https://forum.sources.ru/index.php?showtopic=410512&amp;view=findpost&amp;p=3711547</link>
        <description><![CDATA[Pacific: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=410512&view=findpost&p=3711487'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Oleg_Smith &#064; <time class="tag-quote__quoted-time" datetime="2017-03-16T17:12:05+00:00">16.03.17, 17:12</time></span><div class='quote '>#define SERVER &quot;239.254.1.2&quot;</div></div><br>
IP у сервера точно такой? Думаю, проблема в этом. Широковещательные UDP работают только в пределах одной локалки. Первый же шлюз их не пропустит.]]></description>
        <author>Pacific</author>
        <category>C/C++: Сетевое программирование</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=410512&amp;view=findpost&amp;p=3711487</guid>
        <pubDate>Thu, 16 Mar 2017 17:12:05 +0000</pubDate>
        <title>Широковещательные UDP</title>
        <link>https://forum.sources.ru/index.php?showtopic=410512&amp;view=findpost&amp;p=3711487</link>
        <description><![CDATA[Oleg_Smith: Всем привет&#33;<br>
<br>
Нужно сделать удаленное управление програмой которая запущена на другом компе.<br>
Хочу избежать введения адреса компа. Для этого хочу посталь широковещательное вещание.<br>
Комп на котором запущена программа будет посылать свой IP. <br>
Другой комп будет слушать и принимать нужные параметры для подключения. И после этого подключаться.<br>
<br>
Итак, надо послать широковещательное сообщение.<br>
<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">#define BUFLEN 512 &nbsp;//Max length of buffer</div><div class="code_line">#define PORT 7125 &nbsp; //The port on which to listen for incoming data</div><div class="code_line">#define SERVER &quot;239.254.1.2&quot;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;int iResult = 0;</div><div class="code_line">&nbsp;&nbsp; &nbsp;WSADATA wsaData;</div><div class="code_line">&nbsp;&nbsp; &nbsp;iResult = WSAStartup(MAKEWORD(2, 2), &amp;wsaData);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;int mySocket = socket(AF_INET, SOCK_DGRAM, 0);</div><div class="code_line">&nbsp;&nbsp; &nbsp;if (mySocket &#60; 0)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;int n = 0;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;int enableBroadcast = 1;</div><div class="code_line">&nbsp;&nbsp; &nbsp;if (setsockopt(mySocket, SOL_SOCKET, SO_BROADCAST, (char*)&amp;enableBroadcast, sizeof(enableBroadcast)) &#60; 0)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;int n = 0;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;sockaddr_in myAddress;</div><div class="code_line">&nbsp;&nbsp; &nbsp;myAddress.sin_family = AF_INET;</div><div class="code_line">&nbsp;&nbsp; &nbsp;myAddress.sin_port = htons(67);//вешаем на порт</div><div class="code_line">&nbsp;&nbsp; &nbsp;myAddress.sin_addr.s_addr = htonl(INADDR_ANY);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;if (bind(mySocket, (sockaddr*)&amp;myAddress, sizeof(myAddress)) &#60; 0)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;int n = 0;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;sockaddr_in to;</div><div class="code_line">&nbsp;&nbsp; &nbsp;to.sin_family = AF_INET;</div><div class="code_line">&nbsp;&nbsp; &nbsp;to.sin_port = htons(PORT);</div><div class="code_line">&nbsp;&nbsp; &nbsp;to.sin_addr.s_addr = inet_addr(SERVER);//htonl(INADDR_BROADCAST);</div><div class="code_line">&nbsp;&nbsp; &nbsp;to.sin_addr.S_un.S_addr = inet_addr(SERVER);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;socklen_t toLen = sizeof(to);</div><div class="code_line">&nbsp;&nbsp; &nbsp;char *mess = &quot;trololo&quot;;</div><div class="code_line">&nbsp;&nbsp; &nbsp;while(1)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;int n = sendto(mySocket, mess, 7, 0, (sockaddr*)&amp;to, toLen);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;Sleep(500);</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br>
<br>
<br>
Получение пробую сделать на другом компе:<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">#define BUFLEN 512 &nbsp;//Max length of buffer</div><div class="code_line">#define PORT 7125 &nbsp; //The port on which to listen for incoming data</div><div class="code_line">#define SERVER &quot;239.254.1.2&quot;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;struct sockaddr_in si_other;</div><div class="code_line">&nbsp;&nbsp; &nbsp;int s, slen = sizeof(si_other);</div><div class="code_line">&nbsp;&nbsp; &nbsp;char buf[BUFLEN];</div><div class="code_line">&nbsp;&nbsp; &nbsp;char message[BUFLEN];</div><div class="code_line">&nbsp;&nbsp; &nbsp;WSADATA wsa;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;//Initialise winsock</div><div class="code_line">&nbsp;&nbsp; &nbsp;printf(&quot;\nInitialising Winsock...&quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp;if (WSAStartup(MAKEWORD(2, 2), &amp;wsa) != 0)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;printf(&quot;Failed. Error Code : %d&quot;, WSAGetLastError());</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;exit(EXIT_FAILURE);</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;printf(&quot;Initialised.\n&quot;);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;//create socket</div><div class="code_line">&nbsp;&nbsp; &nbsp;if ((s = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) == SOCKET_ERROR)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;printf(&quot;socket() failed with error code : %d&quot;, WSAGetLastError());</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;exit(EXIT_FAILURE);</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;//setup address structure</div><div class="code_line">&nbsp;&nbsp; &nbsp;memset((char *)&amp;si_other, 0, sizeof(si_other));</div><div class="code_line">&nbsp;&nbsp; &nbsp;si_other.sin_family = AF_INET;</div><div class="code_line">&nbsp;&nbsp; &nbsp;si_other.sin_port = htons(PORT);</div><div class="code_line">&nbsp;&nbsp; &nbsp;si_other.sin_addr.S_un.S_addr = inet_addr(SERVER);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;//start communication</div><div class="code_line">&nbsp;&nbsp; &nbsp;while (1)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;printf(&quot;Enter message : &quot;);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;//receive a reply and print it</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;//clear the buffer by filling null, it might have previously received data</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;memset(buf, &#39;{text}&#39;, BUFLEN);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;//try to receive some data, this is a blocking call</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if (recvfrom(s, buf, BUFLEN, 0, (struct sockaddr *) &amp;si_other, &amp;slen) == SOCKET_ERROR)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;printf(&quot;recvfrom() failed with error code : %d&quot;, WSAGetLastError());</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;DWORD dw = WSAGetLastError();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;int n = 0;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;closesocket(s);</div><div class="code_line">&nbsp;&nbsp; &nbsp;WSACleanup();</div></ol></div></div></div></div><br>
<br>
Слать вроде шлет, но получить не получается.<br>
<br>
<br>
Помогите плиз кто может&#33;]]></description>
        <author>Oleg_Smith</author>
        <category>C/C++: Сетевое программирование</category>
      </item>
	
      </channel>
      </rss>
	