<?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=90824&amp;view=findpost&amp;p=680414</guid>
        <pubDate>Tue, 12 Apr 2005 18:13:13 +0000</pubDate>
        <title>Работа с WinSocket&amp;#39;s</title>
        <link>https://forum.sources.ru/index.php?showtopic=90824&amp;view=findpost&amp;p=680414</link>
        <description><![CDATA[madman: Может у кого нить есть сервер и клиент не в консольном варианте, а в диалоговом (хотябы :))с примитивным набором функций. Нормально произвести коннект, и возможность отправлять мессаги типа - HelloWorld :D в обе стороны ессесно.<br>Если есть, то уже очень хотелось бы посмотреть на него&#33;]]></description>
        <author>madman</author>
        <category>C/C++: Сетевое программирование</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=90824&amp;view=findpost&amp;p=680403</guid>
        <pubDate>Tue, 12 Apr 2005 18:02:26 +0000</pubDate>
        <title>Работа с WinSocket&amp;#39;s</title>
        <link>https://forum.sources.ru/index.php?showtopic=90824&amp;view=findpost&amp;p=680403</link>
        <description><![CDATA[MOHAX: <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">send(my_sock,sHELLO,sizeof(sHELLO),0);</div><div class="code_line">// Тут конечно можно написать третьим параметром sizeof(sHELLO)</div><div class="code_line">// т.к. #define sHELLO &quot;Hello, Sailor\r\n&quot;</div><div class="code_line">&nbsp;</div><div class="code_line">send(sock,buff,sizeof(buff),0);</div><div class="code_line">// А вот тут советую поменять sizeof() на strlen() ибо char buff[9999];</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script>]]></description>
        <author>MOHAX</author>
        <category>C/C++: Сетевое программирование</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=90824&amp;view=findpost&amp;p=679929</guid>
        <pubDate>Tue, 12 Apr 2005 11:02:39 +0000</pubDate>
        <title>Работа с WinSocket&amp;#39;s</title>
        <link>https://forum.sources.ru/index.php?showtopic=90824&amp;view=findpost&amp;p=679929</link>
        <description><![CDATA[ViGOur: <div class="tag-mod"><div class="tag-mod__prefix">M</div><div class="tag-mod__body"><strong class='tag-b'>YOG</strong>, Используем тег &#91;code&#93; для добавления текста программы в пост&#33; Устное предупреждение&#33; Читаем <a class='tag-url' href='http&#58;//forum.sources.ru/rules.html' target='_blank'><strong class='tag-b'><span class="tag-color tag-color-named" data-value="red" style="color&#58; red">правила</span></strong></a>&#33;<br>
<br>
<strong class='tag-b'>Jenizix</strong>, если слишком длинный код, то лучше выкладывать исходник, а не постить в теге &#91;CODE&#93;. &#59;&#41; </div></div>]]></description>
        <author>ViGOur</author>
        <category>C/C++: Сетевое программирование</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=90824&amp;view=findpost&amp;p=679788</guid>
        <pubDate>Tue, 12 Apr 2005 09:50:23 +0000</pubDate>
        <title>Работа с WinSocket&amp;#39;s</title>
        <link>https://forum.sources.ru/index.php?showtopic=90824&amp;view=findpost&amp;p=679788</link>
        <description><![CDATA[Jenizix: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>А если клиент может подрубаться только один? Какой кусок кода измениться?</div></div><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="2005-04-12T09:51:27+00:00">12.04.05, 09:51</time></span></span><br>
Ну а так подключение нового клиента обрабатывает ф-ия <strong class='tag-b'>accept</strong>]]></description>
        <author>Jenizix</author>
        <category>C/C++: Сетевое программирование</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=90824&amp;view=findpost&amp;p=679766</guid>
        <pubDate>Tue, 12 Apr 2005 09:33:04 +0000</pubDate>
        <title>Работа с WinSocket&amp;#39;s</title>
        <link>https://forum.sources.ru/index.php?showtopic=90824&amp;view=findpost&amp;p=679766</link>
        <description><![CDATA[Dr_ShpitsVogel: 2 YOG:<br>тот код, что ты привел - это код сниффера(программа которая перехватывает пакеты), в твоем случае она будет перехватывать весь трафик...доработать не получится, надо переделывать полностью...]]></description>
        <author>Dr_ShpitsVogel</author>
        <category>C/C++: Сетевое программирование</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=90824&amp;view=findpost&amp;p=679758</guid>
        <pubDate>Tue, 12 Apr 2005 09:29:53 +0000</pubDate>
        <title>Работа с WinSocket&amp;#39;s</title>
        <link>https://forum.sources.ru/index.php?showtopic=90824&amp;view=findpost&amp;p=679758</link>
        <description><![CDATA[YOG: Спасибо.<br>А если клиент может подрубаться только один? Какой кусок кода измениться?]]></description>
        <author>YOG</author>
        <category>C/C++: Сетевое программирование</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=90824&amp;view=findpost&amp;p=679709</guid>
        <pubDate>Tue, 12 Apr 2005 08:57:55 +0000</pubDate>
        <title>Работа с WinSocket&amp;#39;s</title>
        <link>https://forum.sources.ru/index.php?showtopic=90824&amp;view=findpost&amp;p=679709</link>
        <description><![CDATA[Jenizix: А нужно чтоб много клиентов могли к серверу подключится одновременно??? <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="2005-04-12T09:01:06+00:00">12.04.05, 09:01</time></span></span><br>
Если да то вот так можно:<br>
<br>
<strong class='tag-b'>Server :</strong><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">#include &#60;stdio.h&#62;</div><div class="code_line">#include &#60;string.h&#62;</div><div class="code_line">#include &#60;winsock2.h&#62;</div><div class="code_line">#include &#60;conio.h&#62;</div><div class="code_line">&nbsp;</div><div class="code_line">#pragma comment(lib, &quot;ws2_32.lib&quot;)</div><div class="code_line">&nbsp;</div><div class="code_line">#define PORT 31337</div><div class="code_line">&nbsp;</div><div class="code_line">SOCKADDR_IN socketaddr;</div><div class="code_line">SOCKET sock;</div><div class="code_line">const int WM_SERVER_ACCEPT = WM_USER+1;</div><div class="code_line">&nbsp;</div><div class="code_line">int nclients = 0;</div><div class="code_line">&nbsp;</div><div class="code_line">DWORD WINAPI SexToClient(LPVOID client_socket);</div><div class="code_line">bool _startserver();</div><div class="code_line">HWND GetConsoleHWND();</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">int main()</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;_startserver();</div><div class="code_line">&nbsp;&nbsp; &nbsp;return 0;</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">bool _startserver()</div><div class="code_line">{</div><div class="code_line">&nbsp;</div><div class="code_line">WSADATA wsaData;</div><div class="code_line">&nbsp;</div><div class="code_line">if (WSAStartup(MAKEWORD(2,2), &amp;wsaData)) </div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;printf (&quot;Winsock not bi initialized !\n&quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp;WSACleanup();</div><div class="code_line">&nbsp;&nbsp; &nbsp;return false;</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">if ((sock=socket(AF_INET,SOCK_STREAM,0))&#60;0)</div><div class="code_line">{</div><div class="code_line">printf(&quot;Error socket %d\n&quot;,WSAGetLastError());</div><div class="code_line">WSACleanup();</div><div class="code_line">return false;</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">sockaddr_in local_addr;</div><div class="code_line">local_addr.sin_family=AF_INET;</div><div class="code_line">local_addr.sin_port=htons(31337); </div><div class="code_line">local_addr.sin_addr.s_addr=INADDR_ANY;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">if (bind(sock,(struct sockaddr *)&amp;local_addr,sizeof(local_addr))==SOCKET_ERROR)</div><div class="code_line">{</div><div class="code_line">&nbsp;</div><div class="code_line">printf(&quot;Error bind %d\n&quot;,WSAGetLastError());</div><div class="code_line">closesocket(sock); </div><div class="code_line">WSACleanup();</div><div class="code_line">return false;</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">if (listen(sock, 0x100))</div><div class="code_line">{</div><div class="code_line">&nbsp;</div><div class="code_line">printf(&quot;Error listen %d\n&quot;,WSAGetLastError());</div><div class="code_line">closesocket(sock);</div><div class="code_line">WSACleanup();</div><div class="code_line">return false;</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">printf(&quot;Waiting for connections...\n&quot;);</div><div class="code_line">&nbsp;</div><div class="code_line">int len=sizeof(local_addr);</div><div class="code_line">&nbsp;</div><div class="code_line">SOCKET client_socket; // сокет для клиента</div><div class="code_line">sockaddr_in client_addr; // адрес клиента (заполняется системой)</div><div class="code_line">&nbsp;</div><div class="code_line">int client_addr_size=sizeof(client_addr);</div><div class="code_line">&nbsp;</div><div class="code_line">while((client_socket=accept(sock, (sockaddr *)&amp;client_addr, &amp;client_addr_size)))</div><div class="code_line">{</div><div class="code_line">nclients++; // увеличиваем счетчик подключившихся клиентов</div><div class="code_line">&nbsp;</div><div class="code_line">// пытаемся получить имя хоста</div><div class="code_line">HOSTENT *hst;</div><div class="code_line">hst=gethostbyaddr((char *)&amp;client_addr.sin_addr.s_addr,4,AF_INET);</div><div class="code_line">&nbsp;</div><div class="code_line">// вывод сведений о клиенте</div><div class="code_line">printf(&quot;+%s [%s] new connect!\n&quot;,</div><div class="code_line">(hst)?hst-&#62;h_name:&quot;&quot;,inet_ntoa(client_addr.sin_addr));</div><div class="code_line">printf(&quot;NEWS USER\n&quot;);</div><div class="code_line">//printf(&quot;ncl inf: = %l&quot;,client_socket[nclients]);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; </div><div class="code_line">////////////////////////////////////////////////</div><div class="code_line">////////////////////////////////////////////////</div><div class="code_line">// Вызов нового потока для обслужвания клиента</div><div class="code_line">// Да, для этого рекомендуется использовать _beginthreadex</div><div class="code_line">// но, поскольку никаких вызов функций стандартной Си библиотеки</div><div class="code_line">// поток не делает, можно обойтись и CreateThread</div><div class="code_line">DWORD thID;</div><div class="code_line">CreateThread(NULL,NULL,SexToClient,&amp;client_socket,NULL,&amp;thID);</div><div class="code_line">///////////////////////////////////////////////</div><div class="code_line">///////////////////////////////////////////////</div><div class="code_line">&nbsp;</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">return true;</div><div class="code_line">&nbsp;</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">HWND GetConsoleHWND()</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;SetConsoleTitle(&quot;Sarver started...&quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp;HWND hwndConsoleWindow;</div><div class="code_line">&nbsp;&nbsp; &nbsp;hwndConsoleWindow=FindWindow(NULL, &quot;Sarver started...&quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp;if (hwndConsoleWindow==0)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;printf(&quot;Error Find Window&quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;exit(0);</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;return hwndConsoleWindow;</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">// Эта функция создается в отдельном потоке</div><div class="code_line">// и обсуживает очередного подключившегося клиента независимо от остальных</div><div class="code_line">&nbsp;</div><div class="code_line">DWORD WINAPI SexToClient(LPVOID client_socket)</div><div class="code_line">{</div><div class="code_line">&nbsp;</div><div class="code_line">SOCKET my_sock;</div><div class="code_line">my_sock=((SOCKET *) client_socket)[0];</div><div class="code_line">char buff[9999];</div><div class="code_line">#define sHELLO &quot;Hello, Sailor\r\n&quot;</div><div class="code_line">&nbsp;</div><div class="code_line">// отправляем клиенту приветствие </div><div class="code_line">send(my_sock,sHELLO,sizeof(sHELLO),0);</div><div class="code_line">&nbsp;</div><div class="code_line">// цикл эхо-сервера: прием строки от клиента и возвращение ее клиенту</div><div class="code_line">while(int recvbyte = recv(my_sock,buff,sizeof(buff),0))</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;//главный цикл обработки сообщений от клиентов...</div><div class="code_line">&nbsp;&nbsp; &nbsp;if(recvbyte&#60;=0)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;break;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;printf(&quot;Client=&#62; %s&quot;,buff);</div><div class="code_line">&nbsp;&nbsp; &nbsp;send(my_sock,buff,strlen(buff),0);</div><div class="code_line">&nbsp;&nbsp; &nbsp;buff[0]=0;</div><div class="code_line">}</div><div class="code_line">// если мы здесь, то произошел выход из цикла по причине </div><div class="code_line">// возращения функцией recv ошибки &#8211; соединение с клиентом разорвано</div><div class="code_line">nclients--; // уменьшаем счетчик активных клиентов</div><div class="code_line">printf(&quot;-disconnect\n&quot;);</div><div class="code_line">&nbsp;</div><div class="code_line">// закрываем сокет</div><div class="code_line">closesocket(my_sock);</div><div class="code_line">&nbsp;</div><div class="code_line">return 0;</div><div class="code_line">}</div></ol></div></div></div></div><br>
<br>
<strong class='tag-b'>Client</strong><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">#include &#60;stdio.h&#62;</div><div class="code_line">#include &#60;string.h&#62;</div><div class="code_line">#include &#60;winsock2.h&#62;</div><div class="code_line">&nbsp;</div><div class="code_line">#pragma comment(lib, &quot;ws2_32.lib&quot;)</div><div class="code_line">&nbsp;</div><div class="code_line">#define PORT 31337</div><div class="code_line">char* HOST=&quot;127.0.0.1&quot;;</div><div class="code_line">&nbsp;</div><div class="code_line">SOCKADDR_IN socketaddr;</div><div class="code_line">SOCKET sock;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">bool _connect(char* addres);</div><div class="code_line">bool _getdata();</div><div class="code_line">&nbsp;</div><div class="code_line">int main(int argc, char* pszArgs[])</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;if(argc&#62;1)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;HOST=pszArgs[1]; &nbsp; &nbsp; &nbsp; &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;if(_connect(HOST))</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;_getdata();</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;scanf(&quot;A&quot;);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;return 0;</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">bool _connect(char* addres)</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;WSADATA wsaData;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;if (WSAStartup(MAKEWORD(2,2), &amp;wsaData)) </div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;printf (&quot;Winsock not bi initialized !\n&quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;WSACleanup();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return false;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;sock = socket(AF_INET,SOCK_STREAM,0);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;socketaddr.sin_family = AF_INET;</div><div class="code_line">&nbsp;&nbsp; &nbsp;socketaddr.sin_addr.s_addr=inet_addr(addres);</div><div class="code_line">&nbsp;&nbsp; &nbsp;socketaddr.sin_port=htons(PORT);</div><div class="code_line">&nbsp;&nbsp; &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;if(connect(sock,(sockaddr *)&amp;socketaddr,sizeof(socketaddr)))</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;printf(&quot;Can\&#39;t connect to %s\n\n&quot;,addres);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;WSACleanup();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return false;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;else</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;printf(&quot;Connected!\n\n\n\n&quot;);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;return true;</div><div class="code_line">}</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">bool _getdata()</div><div class="code_line">{</div><div class="code_line">char buff[1024];</div><div class="code_line">int nsize;</div><div class="code_line">while((nsize=recv(sock,buff,sizeof(buff),0))!=SOCKET_ERROR)</div><div class="code_line">{</div><div class="code_line">// ставим завершающий ноль в конце строки </div><div class="code_line">//buff[nsize]=0;</div><div class="code_line">&nbsp;</div><div class="code_line">// выводим на экран </div><div class="code_line">&nbsp;&nbsp; &nbsp;buff[nsize]=&#39;{text}&#39;;</div><div class="code_line">printf(&quot;Server =&#62; &nbsp;%s\n&quot;,buff);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">// читаем пользовательский ввод с клавиатуры</div><div class="code_line">printf(&quot;=&#62; &quot;);</div><div class="code_line">fgets(buff,sizeof(buff),stdin);</div><div class="code_line">&nbsp;</div><div class="code_line">// проверка на &quot;quit&quot;</div><div class="code_line">if (!strcmp(&amp;buff[0],&quot;quit\n&quot;))</div><div class="code_line">{</div><div class="code_line">// Корректный выход</div><div class="code_line">printf(&quot;Exit...&quot;);</div><div class="code_line">closesocket(sock);</div><div class="code_line">WSACleanup();</div><div class="code_line">return true;</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">//шлем дату...</div><div class="code_line">send(sock,buff,sizeof(buff),0);</div><div class="code_line">&nbsp;</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">return true;</div><div class="code_line">&nbsp;</div><div class="code_line">}</div></ol></div></div></div></div><br>
<br>
Сервер слушает порт 31337 на подключение клиентов...]]></description>
        <author>Jenizix</author>
        <category>C/C++: Сетевое программирование</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=90824&amp;view=findpost&amp;p=679693</guid>
        <pubDate>Tue, 12 Apr 2005 08:50:55 +0000</pubDate>
        <title>Работа с WinSocket&amp;#39;s</title>
        <link>https://forum.sources.ru/index.php?showtopic=90824&amp;view=findpost&amp;p=679693</link>
        <description><![CDATA[YOG: Товарищи&#33;<br>
Позарез нужно срочно написать нечто в духе Telnet.<br>
Подскажите как это делать?<br>
<br>
Надо чтобы сервер подрубарся к заданному порту (число из командной строки) и ждал подключения клиента. Если тот подключился к тому же порту, то выдавать ему приветствие и ждать от него команд, при получении  команды от клиента (строка), что-то с ней делать и отсылать обратно (строку).<br>
<br>
КАК ЭТО СОТВОРИТЬ? ГДЕ ПРО ЭТО ПОЧИТАТЬ?<br>
<br>
Может кто-нибудь исходники накидать, чтобы разобраться?<br>
<br>
Видел в одном месте кое-что но там это под Linux, а мне надо под Винды.  <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">#include &quot;stdafx.h&quot;</div><div class="code_line">#include &#60;stdio.h&#62;</div><div class="code_line">#include &#60;conio.h&#62;</div><div class="code_line">#include &#60;winsock2.h&#62;</div><div class="code_line">#include &#60;protocol.h&#62;</div><div class="code_line">&nbsp;</div><div class="code_line">#define MAX_PACKET_SIZE &nbsp;0x10000</div><div class="code_line">#define SIO_RCVALL 0x98000001</div><div class="code_line">&nbsp;</div><div class="code_line">static char Buffer[MAX_PACKET_SIZE];</div><div class="code_line">&nbsp;</div><div class="code_line">int main(int argc, char* argv[])</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;WSADATA &nbsp; &nbsp; &nbsp; wsadata; &nbsp; // Инициализация WinSock.</div><div class="code_line">&nbsp;&nbsp; &nbsp;SOCKET &nbsp; &nbsp; &nbsp; &nbsp;s; &nbsp; &nbsp; &nbsp; &nbsp; // Cлущающий сокет.</div><div class="code_line">&nbsp;&nbsp; &nbsp;char &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;name[128]; // Имя хоста (компьютера).</div><div class="code_line">&nbsp;&nbsp; &nbsp;HOSTENT* &nbsp; &nbsp; &nbsp;phe; &nbsp; &nbsp; &nbsp; // Информация о хосте.</div><div class="code_line">&nbsp;&nbsp; &nbsp;SOCKADDR_IN &nbsp; sa; &nbsp; &nbsp; &nbsp; &nbsp;// Адрес хоста</div><div class="code_line">&nbsp;&nbsp; &nbsp;unsigned long flag = 1; &nbsp;// Флаг PROMISC Вкл/выкл.</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// инициализация</div><div class="code_line">&nbsp;&nbsp; &nbsp;WSAStartup(MAKEWORD(2,2), &amp;wsadata);</div><div class="code_line">&nbsp;&nbsp; &nbsp;s = socket( AF_INET, SOCK_RAW, IPPROTO_IP );</div><div class="code_line">&nbsp;&nbsp; &nbsp;gethostname(name, sizeof(name));</div><div class="code_line">&nbsp;&nbsp; &nbsp;phe = gethostbyname( name );</div><div class="code_line">&nbsp;&nbsp; &nbsp;ZeroMemory( &amp;sa, sizeof(sa) );</div><div class="code_line">&nbsp;&nbsp; &nbsp;sa.sin_family = AF_INET;</div><div class="code_line">&nbsp;&nbsp; &nbsp;sa.sin_addr.s_addr = ((struct in_addr *)phe-&#62;h_addr_list[0])-&#62;s_addr;</div><div class="code_line">&nbsp;&nbsp; &nbsp;bind(s, (SOCKADDR *)&amp;sa, sizeof(SOCKADDR));</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Включение promiscuous mode.</div><div class="code_line">&nbsp;&nbsp; &nbsp;ioctlsocket(s, SIO_RCVALL, &amp;flag);</div><div class="code_line">&nbsp;&nbsp; &nbsp;long cnt = 0;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Приём IP-пакетов.</div><div class="code_line">&nbsp;&nbsp; &nbsp;while( !_kbhit() )</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;int count;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;printf(&quot;%d&quot;, cnt++);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;count = recv( s, Buffer, sizeof(Buffer), 0 );</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// обработка IP-пакета</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if( count &#62;= sizeof(IP_HEADER) )</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;IP_HEADER* hdr = (IP_HEADER *)Buffer;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//что-то делаем с пакетом...</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Конец работы.</div><div class="code_line">&nbsp;&nbsp; &nbsp;closesocket( s );</div><div class="code_line">&nbsp;&nbsp; &nbsp;WSACleanup();</div><div class="code_line">&nbsp;&nbsp; &nbsp;return 0;</div><div class="code_line">}</div></ol></div></div></div></div><br>
Как привести этот сервер в нужный вид и дописать к нему клиент]]></description>
        <author>YOG</author>
        <category>C/C++: Сетевое программирование</category>
      </item>
	
      </channel>
      </rss>
	