Модераторы: feodorv
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> connection refused 
:(
    Опции темы
IoganeGambaPuti
Дата 4.3.2009, 22:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 13.1.2009

Репутация: нет
Всего: нет



Здравствуйте.Прогоняю в отладчике код и получаю,на функции connect() ошибку: connection refuced. Я так понимаю у меня закрыт 13ый порт.
Код

#include    "unp.h"

int
main(int argc, char **argv)
{
    int                    sockfd, n;
    char                recvline[MAXLINE + 1];
    struct sockaddr_in    servaddr;

    if (argc != 2)
        err_quit("usage: a.out <IPaddress>");

    if ( (sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0)
        err_sys("socket error");

    bzero(&servaddr, sizeof(servaddr));
    servaddr.sin_family = AF_INET;
    servaddr.sin_port   = htons(13);    /* daytime server */
    if (inet_pton(AF_INET, argv[1], &servaddr.sin_addr) <= 0)
        err_quit("inet_pton error for %s", argv[1]);

    if (connect(sockfd, (SA *) &servaddr, sizeof(servaddr)) < 0)
        err_sys("connect error");

    while ( (n = read(sockfd, recvline, MAXLINE)) > 0) {
        recvline[n] = 0;    /* null terminate */
        if (fputs(recvline, stdout) == EOF)
            err_sys("fputs error");
    }
    if (n < 0)
        err_sys("read error");

    exit(0);
}


Манипуляции с iptables к ничему не приводят:

% IPTABLES -A INPUT -p TCP -s 0/0 --dport 13 -j ACCEPT

Почему порт остаётся закрытым и как это исправить?
PM MAIL   Вверх
vinick
Дата 4.3.2009, 23:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 285
Регистрация: 9.6.2005

Репутация: 6
Всего: 22



Цитата(IoganeGambaPuti @  4.3.2009,  22:42 Найти цитируемый пост)
connection refuced. Я так понимаю у меня закрыт 13ый порт.

Еще это может означать, что 13 порт никто не слушает.  Сервер запущен?
PM MAIL ICQ Jabber   Вверх
IoganeGambaPuti
Дата 5.3.2009, 00:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 13.1.2009

Репутация: нет
Всего: нет



% a.out 127.0.0.1 
Т. е. я через интерфейс lo конекчусь к себе же на 13 порт, а там должен висеть работающий сервер даты и времени,который эту дату обязан мне предоставить в "человеко формате". Я так понимаю этот сервер всегда запущен, главное открыть порт.
PM MAIL   Вверх
vinick
Дата 5.3.2009, 02:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 285
Регистрация: 9.6.2005

Репутация: 6
Всего: 22



Цитата(IoganeGambaPuti @  5.3.2009,  00:57 Найти цитируемый пост)
Я так понимаю этот сервер всегда запущен, главное открыть порт. 

Нет. Главное запустить сервер.
посмотри команду netstat. она поможет узнать слушает ли кто-то порты и на каких интерфейсах.
PM MAIL ICQ Jabber   Вверх
Ezik
Дата 12.3.2009, 19:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 15.8.2007

Репутация: нет
Всего: 2



Попробуйте добавить в начале программы

Код

WSADATA wsd;
    WORD Version = MAKEWORD(2,2);

    if (WSAStartup(Version,&wsd)!=0) {
        printf("WSAStartup error\n");
        return 1;
    }; 

PM MAIL ICQ   Вверх
Олег2005
Дата 13.3.2009, 21:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Завсегдатай
Сообщений: 421
Регистрация: 26.5.2005
Где: Рига Латвия

Репутация: 6
Всего: 11



Для лупбэка нет понятия закрытый порт.
Если программа сервера работает - то и порт, на котором она слушает сеть (в данном случае сам себя - открыт).
Если программа не работает - то и порта нет.
Проверьте сервис на 13-ом порту - есть или нет его.

да, еще что то я сомневаюсь
  if (connect(sockfd, (SA *) &servaddr, sizeof(servaddr)) < 0)  err_sys("connect error");
структура адреса обязана быть приведена к типу sockaddr
  if (connect(sockfd, (sockaddr *) &servaddr, sizeof(servaddr)) < 0)        err_sys("connect error");


Еще одно сомнение - прогон в отладчике.
Сетевые программы обычно в отладчиках имеют особенность глючить.
Лучше делать исполняемый код - и его проверять как самостоятельный.

Ezik, 
Речь не идет о Виндовсе......... smile 


Это сообщение отредактировал(а) Олег2005 - 13.3.2009, 21:32
PM MAIL WWW MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.1981 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.