<?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=137765&amp;view=findpost&amp;p=1057649</guid>
        <pubDate>Mon, 27 Mar 2006 20:52:49 +0000</pubDate>
        <title>передача файла через TCP</title>
        <link>https://forum.sources.ru/index.php?showtopic=137765&amp;view=findpost&amp;p=1057649</link>
        <description><![CDATA[Oleg2004: У. Стивенс:<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Для TCP-сервера функция listen() формирует в ядре системы два вида буферов:<br>
·	Буфер-очередь не полностью установленных соединений (т.е. тех, для которых идет и еще полностью не завершен трехсторонний handshake);<br>
·	Буфер-очередь полностью установленных соединений (т.е. тех, для которых трехсторонний handshake успешно завершен и сервер принимает конкретный запрос на обслуживание).<br>
·	Сумма длин обеих очередей не может превышать значение backlog, поэтому ее указание как 1 позволит только установить соединение, но не принимать данные по нему (очередь будет полна).</div></div>]]></description>
        <author>Oleg2004</author>
        <category>C/C++: Сетевое программирование</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=137765&amp;view=findpost&amp;p=1057643</guid>
        <pubDate>Mon, 27 Mar 2006 20:42:01 +0000</pubDate>
        <title>передача файла через TCP</title>
        <link>https://forum.sources.ru/index.php?showtopic=137765&amp;view=findpost&amp;p=1057643</link>
        <description><![CDATA[LuckLess: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=137765&view=findpost&p=1057638'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Oleg2004 &#064; <time class="tag-quote__quoted-time" datetime="2006-03-27T20:33:32+00:00">27.03.06, 20:33</time></span><div class='quote '>Нельзя устанавливать очередь в 1 - минимум 5&#33;</div></div><br>
почему это??<br>
есть максимум , а минимума нет..]]></description>
        <author>LuckLess</author>
        <category>C/C++: Сетевое программирование</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=137765&amp;view=findpost&amp;p=1057638</guid>
        <pubDate>Mon, 27 Mar 2006 20:33:32 +0000</pubDate>
        <title>передача файла через TCP</title>
        <link>https://forum.sources.ru/index.php?showtopic=137765&amp;view=findpost&amp;p=1057638</link>
        <description><![CDATA[Oleg2004: <strong class='tag-b'>bestbrocker</strong><br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>if ( listen( m_socket, 1 ) == SOCKET_ERROR )</div></div><br>
Нельзя устанавливать очередь в 1 - минимум 5&#33;<br>
listen( m_socket, 5 )]]></description>
        <author>Oleg2004</author>
        <category>C/C++: Сетевое программирование</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=137765&amp;view=findpost&amp;p=1057598</guid>
        <pubDate>Mon, 27 Mar 2006 19:49:04 +0000</pubDate>
        <title>передача файла через TCP</title>
        <link>https://forum.sources.ru/index.php?showtopic=137765&amp;view=findpost&amp;p=1057598</link>
        <description><![CDATA[vint: <a class='tag-url' href='http://forum.sources.ru/index.php?showtopic=43245' target='_blank'>Прочти это</a>]]></description>
        <author>vint</author>
        <category>C/C++: Сетевое программирование</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=137765&amp;view=findpost&amp;p=1057578</guid>
        <pubDate>Mon, 27 Mar 2006 19:09:46 +0000</pubDate>
        <title>передача файла через TCP</title>
        <link>https://forum.sources.ru/index.php?showtopic=137765&amp;view=findpost&amp;p=1057578</link>
        <description><![CDATA[bestbrocker: У меня почему-то происходит потеря части информации, причём когда я тестю дома(с своего ПК на свой, указывая свой локальный ip=10.3.5.58 и какой-нить порт) то всё отлично передаётся, а когда я прихожу в универ и такое-же пытаюсь провернють там то файл присылается несклько меньше чем должен быть(так же со своего ПК на свой), в чём могут быть пробледы, могут ли по TCP теряться данные и должен ли я за этим следить? Кому не сложно вот код.<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 &#60;stdio.h&#62;</div><div class="code_line">#include &quot;winsock2.h&quot;</div><div class="code_line">#define BUFF 32</div><div class="code_line">#define MAX_SLEEP 1</div><div class="code_line">void start_server( char* hostname, unsigned short hostsocket ) {</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Initialize Winsock.</div><div class="code_line">&nbsp;&nbsp; &nbsp;WSADATA wsaData;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;//MAKEWORD(2,2) загрузка dll версии &#62; 2,2</div><div class="code_line">&nbsp;&nbsp; &nbsp;int iResult = WSAStartup( MAKEWORD(2,2), &amp;wsaData );</div><div class="code_line">&nbsp;&nbsp; &nbsp;if ( iResult != NO_ERROR )</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;printf(&quot;Error at WSAStartup()\n&quot;);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Create a socket.</div><div class="code_line">&nbsp;&nbsp; &nbsp;SOCKET m_socket; &nbsp; &nbsp;//Что за сокет</div><div class="code_line">&nbsp;&nbsp; &nbsp;m_socket = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP );</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;if ( m_socket == INVALID_SOCKET ) {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;printf( &quot;Error at socket(): %ld\n&quot;, WSAGetLastError() );</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;WSACleanup();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Bind the socket.</div><div class="code_line">&nbsp;&nbsp; &nbsp;sockaddr_in service;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;service.sin_family = AF_INET;</div><div class="code_line">&nbsp;&nbsp; &nbsp;service.sin_addr.s_addr = inet_addr( hostname );</div><div class="code_line">&nbsp;&nbsp; &nbsp;service.sin_port = htons( hostsocket );</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;if ( bind( m_socket, (SOCKADDR*) &amp;service, sizeof(service) ) == SOCKET_ERROR ) {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;printf( &quot;bind() failed.\n&quot; );</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;printf( &quot;: %ld\n&quot;, WSAGetLastError() );</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;closesocket(m_socket);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Listen on the socket.</div><div class="code_line">&nbsp;&nbsp; &nbsp;if ( listen( m_socket, 1 ) == SOCKET_ERROR )</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;printf( &quot;Error listening on socket.\n&quot;);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Accept connections.</div><div class="code_line">&nbsp;&nbsp; &nbsp;SOCKET AcceptSocket;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;printf( &quot;Waiting for a client to connect...\n&quot; );</div><div class="code_line">&nbsp;&nbsp; &nbsp;AcceptSocket = SOCKET_ERROR;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;while ( AcceptSocket == SOCKET_ERROR ) {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;AcceptSocket = accept( m_socket, NULL, NULL );</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;printf( &quot;Client Connected.\n&quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp;m_socket = AcceptSocket; </div><div class="code_line">&nbsp;&nbsp; &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Send and receive data.</div><div class="code_line">&nbsp;&nbsp; &nbsp;int bytesRecv;</div><div class="code_line">&nbsp;&nbsp; &nbsp;long totalSize = 0;</div><div class="code_line">&nbsp;&nbsp; &nbsp;int k = 0;</div><div class="code_line">&nbsp;&nbsp; &nbsp;char recvbuf[32];</div><div class="code_line">&nbsp;&nbsp; &nbsp;char bufsend[1] = {&#39;9&#39;};</div><div class="code_line">&nbsp;&nbsp; &nbsp;char name[100];</div><div class="code_line">&nbsp;&nbsp; &nbsp;char ch;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Вытаскиваем имя файла с сокета. до первого &#39;{text}&#39;</div><div class="code_line">&nbsp;&nbsp; &nbsp;bytesRecv = recv( m_socket, &amp;ch, 1, 0 );</div><div class="code_line">&nbsp;&nbsp; &nbsp;while (bytesRecv &#62;= 0 &amp;&amp; ch != &#39;{text}&#39;){</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;name[k++] = ch;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;bytesRecv = recv( m_socket, &amp;ch, 1, 0 );</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;name[k] = ch;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;long* p = (long* )malloc(sizeof(long));</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Отправляем размер файла.</div><div class="code_line">&nbsp;&nbsp; &nbsp;if ( recv( m_socket, (char* )p, sizeof(long), 0 ) != sizeof(long) ){</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;printf(&quot;Filename not sent.&quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;long sizeOfFile = *p;</div><div class="code_line">&nbsp;&nbsp; &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Создаём файл в который пишим всё с сокета.</div><div class="code_line">&nbsp;&nbsp; &nbsp;FILE* fp = fopen(name, &quot;wb&quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp;if (fp == NULL)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return;</div><div class="code_line">&nbsp;&nbsp; &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;printf(&quot;Size of file: %ld\n&quot;, sizeOfFile);</div><div class="code_line">&nbsp;&nbsp; &nbsp;int tmp = sizeOfFile;</div><div class="code_line">&nbsp;&nbsp; &nbsp;boolean j = false;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Получаем всё что нам отправленно.</div><div class="code_line">&nbsp;&nbsp; &nbsp;while (1){</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;bytesRecv = recv(m_socket, recvbuf, BUFF, 0);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if ( sizeOfFile == 0 &amp;&amp; bytesRecv &#60;= 0 ) {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;break;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;} else if ( bytesRecv &#60;= 0 ) {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if ( j == false ) {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Sleep(MAX_SLEEP);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;j = true;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;} else {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;printf (&quot;Exclusive exit by timeout: recive only %ld&quot;, tmp - sizeOfFile);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;exit(1);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;continue;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;} else {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;fwrite((void* )recvbuf, bytesRecv, 1, fp);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sizeOfFile -= (long)bytesRecv;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;j = false;</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;</div><div class="code_line">&nbsp;&nbsp; &nbsp;printf( &quot;Connection closed, after receiving all %d bytes\n&quot;, tmp);</div><div class="code_line">&nbsp;&nbsp; &nbsp;fclose(fp);</div><div class="code_line">&nbsp;&nbsp; &nbsp;return;</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">void main(int argc, char* argv[]) {</div><div class="code_line">&nbsp;&nbsp; &nbsp;if ( argc == 3 ) {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;start_server( argv[1], (unsigned short) atoi(argv[2]) );</div><div class="code_line">&nbsp;&nbsp; &nbsp;} else {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;printf(&quot;Used: cmd/&#62; server.exe &#60;host&#62; &#60;port&#62;&quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">}</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><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 &#60;stdio.h&#62;</div><div class="code_line">#include &quot;winsock2.h&quot;</div><div class="code_line">&nbsp;</div><div class="code_line">#define BUFF 32</div><div class="code_line">void start_client( char* hostname, unsigned short hostsocket, char* filename ) {</div><div class="code_line">&nbsp;&nbsp; &nbsp;FILE* fp = fopen( filename, &quot;rb&quot; );</div><div class="code_line">&nbsp;&nbsp; &nbsp;if ( fp == NULL )</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Initialize Winsock.</div><div class="code_line">&nbsp;&nbsp; &nbsp;WSADATA wsaData;</div><div class="code_line">&nbsp;&nbsp; &nbsp;int iResult = WSAStartup( MAKEWORD(2,2), &amp;wsaData );</div><div class="code_line">&nbsp;&nbsp; &nbsp;if ( iResult != NO_ERROR )</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;printf(&quot;Error at WSAStartup()\n&quot;);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Create a socket.</div><div class="code_line">&nbsp;&nbsp; &nbsp;SOCKET m_socket;</div><div class="code_line">&nbsp;&nbsp; &nbsp;m_socket = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP );</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;if ( m_socket == INVALID_SOCKET ) {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;printf( &quot;Error at socket(): %ld\n&quot;, WSAGetLastError() );</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;WSACleanup();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Connect to a server.</div><div class="code_line">&nbsp;&nbsp; &nbsp;sockaddr_in clientService;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;clientService.sin_family = AF_INET;</div><div class="code_line">&nbsp;&nbsp; &nbsp;clientService.sin_addr.s_addr = inet_addr( hostname );</div><div class="code_line">&nbsp;&nbsp; &nbsp;clientService.sin_port = htons( hostsocket );</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;if ( connect( m_socket, (SOCKADDR*) &amp;clientService, sizeof(clientService) ) == SOCKET_ERROR) {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;printf( &quot;Failed to connect.\n&quot; );</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;WSACleanup();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Send and receive data.</div><div class="code_line">&nbsp;&nbsp; &nbsp;char sendbuf[BUFF];</div><div class="code_line">&nbsp;&nbsp; &nbsp;char recvbuf[1] = {&#39;9&#39;};</div><div class="code_line">&nbsp;&nbsp; &nbsp;int bytesSent;</div><div class="code_line">&nbsp;&nbsp; &nbsp;int size;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Отправляем имя файла + &#39;{text}&#39;</div><div class="code_line">&nbsp;&nbsp; &nbsp;if ( send( m_socket, filename, (int)strlen(filename) + 1, 0 ) &#60;= 0 ){</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;printf(&quot;Filename not sent.&quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;fseek(fp, 0, SEEK_END);</div><div class="code_line">&nbsp;&nbsp; &nbsp;//void* array = (void* )((int)ftell(fp));</div><div class="code_line">&nbsp;&nbsp; &nbsp;long f = ftell(fp);</div><div class="code_line">&nbsp;&nbsp; &nbsp;long* p;</div><div class="code_line">&nbsp;&nbsp; &nbsp;p = &f;</div><div class="code_line">&nbsp;&nbsp; &nbsp;fseek(fp, 0, SEEK_SET);</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Отправляем размер файла.</div><div class="code_line">&nbsp;&nbsp; &nbsp;if ( send( m_socket, (char* )p, sizeof(long), 0 ) &#60;= 0 ){</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;printf(&quot;Filename not sent.&quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;printf(&quot;To server connected.&quot;);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Отправляем содержимое файла.</div><div class="code_line">&nbsp;&nbsp; &nbsp;size = (int)fread( (void *) sendbuf, sizeof(char), BUFF, fp );</div><div class="code_line">&nbsp;&nbsp; &nbsp;while ( !feof(fp) ) {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;bytesSent = send( m_socket, sendbuf, size, 0 );</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;while ( recv( m_socket, recvbuf, 1, 0 ) == 0 ) {int i = 0; i++; printf(&quot;%c&quot;, recvbuf[1]);}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;if ( size - bytesSent == 0 )</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;size = (int)fread( (void* ) sendbuf, sizeof(char), BUFF, fp );</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;bytesSent = send( m_socket, sendbuf, size, 0 );</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;return;</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">void main ( int argc, char* argv[] ) {</div><div class="code_line">&nbsp;&nbsp; &nbsp;if ( argc == 4 )</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;start_client( argv[1], (unsigned short) atoi(argv[2]), argv[3] );</div><div class="code_line">&nbsp;&nbsp; &nbsp;else</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;printf(&quot;Used: cmd/&#62; client.exe &#60;host&#62; &#60;port&#62; &#60;filename&#62;&quot;);</div><div class="code_line">}</div></ol></div></div></div></div>]]></description>
        <author>bestbrocker</author>
        <category>C/C++: Сетевое программирование</category>
      </item>
	
      </channel>
      </rss>
	