<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: Ошибки в отладке простенького ftp клиента.</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7577.html</link>
    <description>Добрый день. Относительно недавно начал программировать под unix, опыта пока малова-то, поэтому, требуется помощь. Пишу простенький ftp клиент и пока что запнулся на следующем. Когда программа просто прогоняется всё выполняется корректно. Под отладчиком (работаю в SUSE 10.3 KDevelop) он после строчки fdopen и fclose иногда писал Cannot access memory 0x0 &lt;br&gt;а иногда 0xfffffff причём появляются ошибки нерегулярно=(( Под suse 11 которая у меня дома такого вообще не происходит и никакие ошибки не вылазят. &lt;br&gt;&lt;br&gt;Если что-то где-то можно написать красивее и грамотнее было бы здорово услышать предложения=)&lt;br&gt;&lt;br&gt;#ifdef HAVE_CONFIG_H&lt;br&gt;#include &amp;lt;config.h&amp;gt;&lt;br&gt;#endif&lt;br&gt;&lt;br&gt;#include &amp;lt;stdio.h&amp;gt;&lt;br&gt;#include &amp;lt;stdlib.h&amp;gt;&lt;br&gt;#include &amp;lt;cctype&amp;gt;&lt;br&gt;#include &amp;lt;arpa/inet.h&amp;gt;&lt;br&gt;#include &amp;lt;sys/socket.h&amp;gt;&lt;br&gt;#include &amp;lt;netdb.h&amp;gt;&lt;br&gt;&lt;br&gt;#include &amp;lt;unistd.h&amp;gt;&lt;br&gt;#include &amp;lt;iostream&amp;gt;&lt;br&gt;using namespace std;&lt;br&gt;&lt;br&gt;#define MAX_SLEEP_CONNECT 128&lt;br&gt;&lt;br&gt;bool connect_retry(int &amp;sock, const struct sockaddr *addr, socklen_t len);&lt;br&gt;struct addrinfo* GetFtpAddr(const char *host);&lt;br&gt;int </description>

<item>
    <title>Ошибки в отладке простенького ftp клиента. (Allex)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7577.html#12</link>
    <pubDate>Wed, 17 Sep 2008 07:07:58 GMT</pubDate>
    <description>Когда передо мной встала похожая задача, я просто взял готовый опенсурс класс. Поверьте, не стоит тратить время на изобретение велосипеда, ну разве что только в ознакомительных целях.&lt;br&gt;</description>
</item>

<item>
    <title>Ошибки в отладке простенького ftp клиента. (my_way)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7577.html#11</link>
    <pubDate>Sun, 14 Sep 2008 19:55:03 GMT</pubDate>
    <description>Спасибо)&lt;br&gt;</description>
</item>

<item>
    <title>Ошибки в отладке простенького ftp клиента. (vic)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7577.html#10</link>
    <pubDate>Wed, 10 Sep 2008 10:23:22 GMT</pubDate>
    <description>&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt;При взаимодействии с ftp сервером окончательный ответ сервера можно считать только тогда &lt;br&gt;&amp;gt;когда получаем 3 цифры и пробел в строке. Проблема в том &lt;br&gt;&amp;gt;что если по каким-то причинам нам не передали всю информацию которую &lt;br&gt;&amp;gt;мы рассчитывали считать функциями recv или read то процесс надолго зависает. &lt;br&gt;&amp;gt;Как можно защититься от этого? И какие ещё ситуации необходимо учитывать? &lt;br&gt;&amp;gt;Небольшие примеры кода очень бы помогли.. &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;Кстати.. при обрыве связи вызывается сигнал SIGPIPE который как я понимаю следует &lt;br&gt;&amp;gt;игнорировать и обрабатывать в программе как мне эт необходимо? Какие ещё &lt;br&gt;&amp;gt;сетевые проблемы надо учитывать и как? &lt;br&gt;&lt;br&gt;Работать на чтение и запись через select(), тогда будете иметь таймаут на операцию, а следовательно избавитесь от зависаний, а также сможет обрабатывать ошибки на сокете и сигналы. По подробней читайте man sendto и man recv. Ну и в вышеуказанной книге это все описано.&lt;br&gt;</description>
</item>

<item>
    <title>Ошибки в отладке простенького ftp клиента. (my_way)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7577.html#9</link>
    <pubDate>Tue, 09 Sep 2008 18:53:07 GMT</pubDate>
    <description>В процессе возник следующий вопрос.&lt;br&gt;При взаимодействии с ftp сервером окончательный ответ сервера можно считать только тогда когда получаем 3 цифры и пробел в строке. Проблема в том что если по каким-то причинам нам не передали всю информацию которую мы рассчитывали считать функциями recv или read то процесс надолго зависает. Как можно защититься от этого? И какие ещё ситуации необходимо учитывать? Небольшие примеры кода очень бы помогли.. &lt;br&gt;&lt;br&gt;Кстати.. при обрыве связи вызывается сигнал SIGPIPE который как я понимаю следует игнорировать и обрабатывать в программе как мне эт необходимо? Какие ещё сетевые проблемы надо учитывать и как?&lt;br&gt;&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>Ошибки в отладке простенького ftp клиента. (vic)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7577.html#8</link>
    <pubDate>Thu, 04 Sep 2008 09:41:30 GMT</pubDate>
    <description>&amp;gt;А вы не могли бы посоветовать что-нибудь по сетевым приложениям?  Одна &lt;br&gt;&amp;gt;из книг которую собираюсь купить это UNIX: разработка сетевых приложений Стивенсона&lt;br&gt;&lt;br&gt;ее и посоветую :)&lt;br&gt;</description>
</item>

<item>
    <title>Ошибки в отладке простенького ftp клиента. (my_way)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7577.html#7</link>
    <pubDate>Wed, 03 Sep 2008 12:30:40 GMT</pubDate>
    <description>написал случайно под ником своего друга&lt;br&gt;&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>Ошибки в отладке простенького ftp клиента. (timur)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7577.html#6</link>
    <pubDate>Wed, 03 Sep 2008 12:28:18 GMT</pubDate>
    <description>Спасибо за подробный разбор, поправил=) Проштудировать нормально Страуструпа всё никак не доходят руки.. вот и получаю на выходе поверхностные знания=( &lt;br&gt;А вы не могли бы посоветовать что-нибудь по сетевым приложениям?  Одна из книг которую собираюсь купить это UNIX: разработка сетевых приложений Стивенсона, но похоже там и так есть многое из того что есть в Стивенс UNIX. Профессиональное программирование, которая мне сейчас помогает=)&lt;br&gt;</description>
</item>

<item>
    <title>Ошибки в отладке простенького ftp клиента. (vic)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7577.html#5</link>
    <pubDate>Wed, 03 Sep 2008 10:18:45 GMT</pubDate>
    <description>0. Вы на С или С++ пишите? Либо, либо, иначе получается что-то страшное.&lt;br&gt;&lt;br&gt;&amp;gt;bool    connect_retry(int &amp;sock, const struct sockaddr *addr, socklen_t len); &lt;br&gt;&lt;br&gt;1. Ссылке тут не место, т.к. пока не увидишь прототип думаешь что первый параметр не меняется.&lt;br&gt;&lt;br&gt;&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt; &#123; &lt;br&gt;&amp;gt;  if (connect(sock, addr, len) == 0) &lt;br&gt;&amp;gt;  &#123; &lt;br&gt;&amp;gt;   return true; &lt;br&gt;&amp;gt;  &#125; &lt;br&gt;&amp;gt;  if (nsec &amp;lt;= MAX_SLEEP_CONNECT/2) &lt;br&gt;&amp;gt;   sleep(nsec); &lt;br&gt;&amp;gt; &#125; &lt;br&gt;&amp;gt; return false; &lt;br&gt;&amp;gt;&#125;&lt;br&gt;&lt;br&gt;2. вот как узнать почему не соединились? информация об ошибке игнорируется, а должна выводится как минимум в лог файл.&lt;br&gt;3. зачем этот хитрый цикл? Функция connect() реализует начало TCP-соединения, читайте матчасть, попытка соединится несколько раз с увеличением таймаута там уже реализована. Нужнее в данном случае механизм прерывания долго зависающего коннекта к неотвечающему хосту =)&lt;br&gt;4. для комментов в тексте функции лучше // и не размазывать на три строки, но этохоливар уже =)&lt;br&gt;&lt;br&gt;&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt; /* &lt;br&gt;&amp;gt;   По идее здесь должнен освобождать память выделенную</description>
</item>

<item>
    <title>Ошибки в отладке простенького ftp клиента. (my_way)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7577.html#4</link>
    <pubDate>Wed, 03 Sep 2008 06:32:14 GMT</pubDate>
    <description>Большое вам спасибо! =)&lt;br&gt;</description>
</item>

</channel>
</rss>
