Форум программистов, компьютерный форум, киберфорум
C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.79/14: Рейтинг темы: голосов - 14, средняя оценка - 4.79
15 / 15 / 2
Регистрация: 20.11.2009
Сообщений: 452

Сокеты в Fedora 14

22.05.2011, 20:29. Показов 2681. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Необходимо написать программу для передачи бинарных по сети по протоколам tsp и udp под ос Fedora 14.

В качестве базового примера решил использовать http://www.rsdn.ru/article/unix/sockets.xml

начиная с листинга 1, 2 компилятор заявил
1

/home/nikooolay/test/src/main.cc:34:24: ошибка: нет декларации ‘perror’ в этой области видимости
/home/nikooolay/test/src/main.cc:35:15: ошибка: нет декларации ‘exit’ в этой области видимости
/home/nikooolay/test/src/main.cc:43:22: ошибка: нет декларации ‘perror’ в этой области видимости
и тд


Зы ниразу не линксойд, какую лучше использовать среду для разработки подобной задачи?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.05.2011, 20:29
Ответы с готовыми решениями:

После установки второй ОС Fedora, и лодер Windows, и лодер Fedora не отображаются в bios boot options,
В общем ситуация такая: решил установить федору второй ос. Скачал на флешку, все по гайдику, когда устанавливал, выбрал автоматическую...

Php сокеты и unix-сокеты
Здравствуйте, есть программа, написанная на С под Linux. При её работе в памяти хранятся несколько массивов, которые необходимо обработать...

Различия в Fedora
Подскажите в чем различия 1. Сборка Fedora 15 2. Сборка Fedora 15 с KDE 3. Сборка Fedora 15 с LXDE 4. Сборка Fedora 15 с Xfce ...

11
Формучанин
364 / 296 / 42
Регистрация: 02.11.2010
Сообщений: 1,245
22.05.2011, 20:44
в файле main.cc не хватает инклуда:
C
1
#include <stdlib.h>
1
15 / 15 / 2
Регистрация: 20.11.2009
Сообщений: 452
22.05.2011, 20:47  [ТС]
Остались ошибки:
/home/nikooolay/test/src/main.cc:35:24: ошибка: нет декларации ‘perror’ в этой области видимости
/home/nikooolay/test/src/main.cc:66:19: ошибка: нет декларации ‘close’ в этой области видимости
0
Формучанин
364 / 296 / 42
Регистрация: 02.11.2010
Сообщений: 1,245
22.05.2011, 21:19
C
1
2
#include <stdio.h>
#include <unistd.h>
1
15 / 15 / 2
Регистрация: 20.11.2009
Сообщений: 452
22.05.2011, 22:17  [ТС]
Спасибо.
Теперь возник следующий вопрос.
а как собственно клиент получает адрес сервера ?
0
Формучанин
364 / 296 / 42
Регистрация: 02.11.2010
Сообщений: 1,245
22.05.2011, 23:32
Цитата Сообщение от nikooolay Посмотреть сообщение
Спасибо.
Теперь возник следующий вопрос.
а как собственно клиент получает адрес сервера ?
наверное он указан гдето в коде.(мне лень код читать)
0
15 / 15 / 2
Регистрация: 20.11.2009
Сообщений: 452
23.05.2011, 10:19  [ТС]
Как вариант это переменная AF_INET, но откуда она берет значения
0
1259 / 650 / 44
Регистрация: 06.02.2011
Сообщений: 1,654
23.05.2011, 10:43
Не, AF_INET это не переменная и вообще не адрес.
Адрес у вас INADDR_LOOPBACK т.е 127.0.0.1
1
15 / 15 / 2
Регистрация: 20.11.2009
Сообщений: 452
23.05.2011, 14:55  [ТС]
и так в програме клиента указал следующее
addr.sin_addr.s_addr = inet_addr ("192.168.1.2");

при работе возникает ошибка
No route to host

Маршруты клиента

/sbin/iptables -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
target prot opt source destination
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Между кмпами минг есть, файрволы отключены
0
1259 / 650 / 44
Регистрация: 06.02.2011
Сообщений: 1,654
24.05.2011, 11:34
А где маршруты то?
И вы бы кода кусочек показали что-ли.
0
15 / 15 / 2
Регистрация: 20.11.2009
Сообщений: 452
24.05.2011, 15:14  [ТС]
по ссылке ж пример.
вот уже немного доработанный
сервер
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include <sys/types.h>
#include <sys/socket.h>
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <netinet/in.h>
#include <arpa/inet.h>
int main()
{
    int sock, listener;
    struct sockaddr_in addr;
    char buf[1024];
    int bytes_read;
 
    listener = socket(AF_INET, SOCK_STREAM, 0);
    if(listener < 0)
    {
        perror("socket");
        exit(1);
    }
    
    addr.sin_family = AF_INET;
    addr.sin_port = htons(3425);
    addr.sin_addr.s_addr = htonl(INADDR_ANY);
    if(bind(listener, (struct sockaddr *)&addr, sizeof(addr)) < 0)
    {
        perror("bind");
        exit(2);
    }
 
    listen(listener, 1);
    
    while(1)
    {
        sock = accept(listener, NULL, NULL);
        if(sock < 0)
        {
            perror("accept");
            exit(3);
        }
 
        while(1)
        {
            bytes_read = recv(sock, buf, 1024, 0);
            if(bytes_read <= 0) break;
            send(sock, buf, bytes_read, 0);
        }
    
        close(sock);
    }
    
    return 0;
}
Клиент
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <netinet/in.h>
#include <arpa/inet.h>
char message[] = "Hello there!\n";
char buf[sizeof(message)];
 
int main()
{
    int sock;
    struct sockaddr_in addr;
 
    sock = socket(AF_INET, SOCK_STREAM, 0);
    if(sock < 0)
    {
        perror("socket");
        exit(1);
    }
 
    addr.sin_family = AF_INET;
    addr.sin_port = htons(3425); // или любой другой порт...
    //addr.sin_addr.s_addr = htonl(INADDR_ANY);
    addr.sin_addr.s_addr = inet_addr ("192.168.1.2");
 
 
    if(connect(sock, (struct sockaddr *)&addr, sizeof(addr)) < 0)
    {
        perror("connect");
        exit(2);
    }
 
    send(sock, message, sizeof(message), 0);
    recv(sock, buf, sizeof(message), 0);
    
    printf(buf);
    close(sock);
 
    return 0;
}
0
Nikku
24.05.2011, 16:57
Коль, напиши "route -n" это и есть список маршрутов, а iptables -L -n это совсем не то (мы тупанули когда это писали). И еще, по идее чтобы была связь с айпишником внутри одного сегмента сети, нам достаточно маршрута на непосредственно подключенную сеть, а он и так прописывается по-умолчанию.
З.Ы.: все, поумничал, ухожу, жду подсказок более продвинутых пользователей насчет ошибки функции connect: No route to host.
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.05.2011, 16:57
Помогаю со студенческими работами здесь

Загрузка Fedora
Почему дальше не загружается???

ltsp Fedora
Здравствуйте! Пытаюсь создать ltsp образ в Fedora, но когда запускаю скрипт ltsp-build-server, выводит следующую ошибку &quot; fc13 is...

Wifi в fedora
Как то неправильно работаент wifi. Ось - Федора. Стоит на ноуте. Также на ноуте стоит винь. Также есть домашний комп с винем ХР с выходом в...

WiFi on Fedora 15
Доброе время суток. Поставил себе федору 15 на ноутбук с Broadcom-овскис WiFi адаптером. Адаптер работает но я не могу подключится к...

Установка Fedora
Уже со второго образа создаю загрузочную флешку, запускаю на установку и все заканчивается командной строкой drucut:/#. Что надо указывать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru