Форум программистов, компьютерный форум, киберфорум
C++: Сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
0 / 0 / 0
Регистрация: 13.10.2011
Сообщений: 146

UDP клиент сервер

17.12.2013, 22:25. Показов 2777. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста сделать
"Получение по запросу имени компьютера, физического адреса, IP-адреса."
Есть такое, но оно выводит в клиент дату и вермя, а надо то что выше.

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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
// 1.cpp : Defines the entry point for the console application.
//
 
#include "Winsock2.h"
#include <iostream>
#include <time.h>
#pragma comment(lib,"WS2_32.lib")
using namespace std;
int main()
{
    cout<<"server"<<endl;
    time_t itime;
    struct hostent *rhost;
 
    char dtbuf[255]; 
    char *host;
    char  *tstr;
    time_t st; 
    time(&st); 
    strftime (dtbuf, sizeof (dtbuf), "%d/%m/%Y %H:%M",localtime (&st)); 
//  struct hostent *rhost;
    WSADATA wsadata;
    SOCKADDR_IN S1addr_iN,S2adde_IN;
    int port = 13; 
    SOCKET S1,S2;
    char buf[255];
    int lenbuf = 255;
    char busend[255]="12";
    int S2_LEN = sizeof(S2adde_IN);
    WSAStartup(MAKEWORD(2,2),&wsadata);
    S1addr_iN.sin_family = AF_INET;
    S1addr_iN.sin_port = htons(port);
    S1addr_iN.sin_addr.s_addr =  htonl(INADDR_ANY);
 
    S1 = socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP);
 
    if (S1 == SOCKET_ERROR)
    {
        cout<<"Ошибка создание сокета"<<endl;
    }
    if (bind(S1,(LPSOCKADDR)&S1addr_iN,sizeof(S1addr_iN)) == -1)
    {
        cout<<"Ошибка"<<endl;
    }
 
    int size = sizeof(S2adde_IN);
    recvfrom(S1,buf,255,0,(LPSOCKADDR)&S2adde_IN,&size);
    cout<<buf<<endl;
 
 
 
    rhost=gethostbyaddr((char*)(&S2adde_IN.sin_addr), 
                sizeof(S2adde_IN.sin_addr), AF_INET);
    //Информация 
    if(h_errno){
            printf("gethostbyaddr error: %d\n", h_errno);
            host=inet_ntoa(S2adde_IN.sin_addr);
        }
        else{
            host=rhost->h_name;
        }
 
        itime = time(NULL);
        tstr = ctime(&itime);
 
        cout<<"IP adress"<<endl;
        cout<<S2adde_IN.sin_addr.s_addr<<endl;
        
        printf("%s request from %s:%d\n", tstr, host, 
                htons(S2adde_IN.sin_port));
 
    sendto(S1,dtbuf,255,0,(LPSOCKADDR)&S2adde_IN,size);
    closesocket(S1);
    WSACleanup();
 
    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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
// 1.cpp : Defines the entry point for the console application.
//
 
#include "Winsock2.h"
#include <iostream>
#include <time.h>
#pragma comment(lib,"WS2_32.lib")
using namespace std;
int main()
{
    cout<<"klient"<<endl;
    char dtbuf[255]; 
    char *host;
    time_t st; 
    time(&st); 
    strftime (dtbuf, sizeof (dtbuf), "%d/%m/%Y %H:%M",localtime (&st)); 
    struct hostent *rhost;
    WSADATA wsadata;
    SOCKADDR_IN S1addr_iN,S2adde_IN;
    int port = 13; 
    SOCKET S1,S2;
    char buf[255];
    int lenbuf = 255;
    char busend[255]="12";
    int S2_LEN = sizeof(S2adde_IN);
    WSAStartup(MAKEWORD(2,2),&wsadata);
    S1addr_iN.sin_family = AF_INET;
    S1addr_iN.sin_port = htons(port);
    S1addr_iN.sin_addr.s_addr =  inet_addr("192.168.1.2");
 
    S1 = socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP);
 
    if (S1 == SOCKET_ERROR)
    {
        cout<<"Ошибка создание сокета"<<endl;
    }
    int size = sizeof(S1addr_iN);
    
 
    sendto(S1,dtbuf,255,0,(LPSOCKADDR)&S1addr_iN,size);
 
    recvfrom(S1,buf,255,0,(LPSOCKADDR)&S2adde_IN,&size);
 
    cout<<buf<<endl;
 
      /*
        rhost=gethostbyaddr((char*)(&S2adde_IN.sin_addr), 
            sizeof(S2adde_IN.sin_addr), AF_INET);
        if(h_errno){
        printf("gethostbyaddr error: %d",h_errno);
        host=inet_ntoa(S2adde_IN.sin_addr);
        } 
        else{
        host=rhost->h_name;
        }
        
        // Выводим информацию о поступившем ответе
        printf("%s - reply from %s\n", buf, host);
        */
 
    closesocket(S1);
    getchar();
    WSACleanup();
    return 0;
}
Имя компьютера я так понимаю надо через gethostname выводить.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.12.2013, 22:25
Ответы с готовыми решениями:

UDP Клиент Сервер
Есть простой UDP клиент и UDP эхо-сервер. Вот исходники: Сервер: #include &quot;stdafx.h&quot; #pragma comment ( lib,...

Клиент-Сервер отправка сообщений по udp
Здравствуйте уважаемые форумчане. Я раньше не работал с сетьями. Поэтому обращаюсь за помощью. Мне надо чтобы клиент мог отправить...

Клиент сервер(Sokets UDP) на разных языках
Возможно ли сделать сервер на Delphi а клиент на С++ ??? Вот мой код сервера(Delphi) и клиента (С++). Почему у меня не работает? не...

2
0 / 0 / 0
Регистрация: 13.10.2011
Сообщений: 146
19.12.2013, 18:27  [ТС]
никто не знает?
0
 Аватар для lanu4
15 / 15 / 5
Регистрация: 21.08.2012
Сообщений: 115
Записей в блоге: 2
23.12.2013, 11:34
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
/* ....... */
HOSTENT *hst;
struct sockaddr_in from;
/* ....... */
 *nLen=recvfrom(serv,buf,j,0,(struct sockaddr*)&from,&(*nLength));
 if(*nLen>0)
 {
                        host = "";
                        date_M=DT.CurrentDate(); //дата
                        time_M=DT.CurrentTime(); //время
                        IpAddr = inet_ntoa (from.sin_addr );  // получаем IP адрес
                     if(ListBox1->Items->Count > 0)
                       {
                        for (int i = 0; i < ListBox1->Items->Count; i++)
                           {
                                if (ListBox1->Items->Strings[i] == IpAddr)
                                  {
                                    host = IpAddr;
                                    break;
                                  }
                           }
                       }
                     if(host == "")
                       {
                        hst = gethostbyaddr((char*)&from.sin_addr,4,AF_INET); //получение имини хоста
                        if (hst != NULL)  //если определился хост
                                host = hst->h_name;  // само имя хоста
                        else   //если нет, то присваемаем переменной хосту ip адрес
                            {
                                ListBox1->Items->Add(IpAddr);
                                host = IpAddr;
                            }
                       }
/* ..... */
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.12.2013, 11:34
Помогаю со студенческими работами здесь

Сервер принимает пакеты если клиент указывает неверный порт получателя UDP.
Вот возникла проблема не могу понять почему сервер принимает пакеты если клиент указывает неверный порт получателя UDP. Кто то может...

C++ UDP Клиент
Денечка, есть задание, типа Составление строки путем перемешивания слов. Сервер принимает слова от клиентов. И составляет строку каждый...

Socks5 udp клиент
Нужен пример кода socks5 клиента отправляющего и принимающего UDP пакеты. И что значит Ассоциирование UDP-порта? Для udp соединения через...

Клиент-Серверное приложение. Как сделать, чтобы сервер сам отправлял сообщения на клиент
Добрый день всем. Проблема заключается в следующем: Есть клиент-серверное приложение, хочу реализовать своего рода защиту, чтобы при...

Работа с портами (UDP клиент)
Пишу программу UDP клиент. Задаем номер порта, откуда принимаем информацию и сразу выводим ее в окне. Возникла такая проблема: когда задаю...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
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/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru