Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
Valeria92
4 / 4 / 0
Регистрация: 25.02.2015
Сообщений: 33
1

Программы клиент-сервер

05.03.2015, 20:25. Просмотров 824. Ответов 3
Метки нет (Все метки)

Помогите, пожалуйста, написать 2 программы. Сервер - прослушивает сеть и выводит то что прислано. Клиент - отсылает сообщения. Надо написать в консоли самую простую реализацию. Даже не знаю с чего начать... Какие библиотеки подключить или функции использовать... Буду благодарна за любую информацию.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.03.2015, 20:25
Ответы с готовыми решениями:

Посоветуйте в реализации шифрования трафика программы (сервер-клиент)
Привет, прошу совета знающих людей, какой шифр выбрать для шифрование трафика...

Клиент-сервер
Здравстуйте, мне нужно создать клиент-сервер на C++. В задании я могу...

Клиент-сервер
хотел написать клиент-серверное приложение,но никак не могу понят одну вещь. я...

Клиент - сервер
Необходимо написать программу типа клиент-сервер, смысл вот в чем в клиенте...

Сервер-клиент
Добрый всем вечер. есть код написанный на с. к сожалению код видимо с...

3
kravam
быдлокодер
1709 / 896 / 105
Регистрация: 04.06.2008
Сообщений: 5,545
05.03.2015, 20:31 2
Ищи в сети книгу-статью Касперского "Самоучитель игры на winsock". Это то, что тебе надо.
2
_Ivana
3236 / 1863 / 235
Регистрация: 01.03.2013
Сообщений: 5,108
Записей в блоге: 5
05.03.2015, 20:32 3
Самую простую.... Ну тут кому что просто. Можно разбираться с АПИ выбранной ОС. А можно просто клиентом генерировать текстовые файлы с сообщениями в предопределенном каталоге, а сервером по таймеру сканировать этот каталог, и если там что-то есть (или проще - есть файл с определенным именем) то открываем его, выводим содержимое и удаляем. Единственная возможная тонкость - решение коллизий при одновременном доступе к файлу из клиента и сервера.
0
vxg
Модератор
3261 / 2059 / 325
Регистрация: 13.01.2012
Сообщений: 7,971
06.03.2015, 09:08 4
Лучший ответ Сообщение было отмечено Valeria92 как решение

Решение

Цитата Сообщение от Valeria92 Посмотреть сообщение
Буду благодарна за любую информацию.
сервер
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
//------------------------------------------------------------------------------
#include <iostream>
#include <winsock2.h>
#include <WS2tcpip.h>
#include <windows.h>
//------------------------------------------------------------------------------
int main(int argc, char* argv[])
{
    std::string ip;
    std::cout << "IP>";
    std::cin >> ip;
 
    int port;
    std::cout << "port>";
    std::cin >> port;
    std::cin.ignore();
 
    WSADATA wsa_data;
    if (WSAStartup(0x101, &wsa_data) || wsa_data.wVersion != 0x101)
    {
        std::cout << "WSAStartup error" << std::endl;
        
        return -1;
    }
 
    SOCKET s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
    if (s == INVALID_SOCKET)
    {
        std::cout << "socket error" << std::endl;
 
        return -1;
    }
 
    SOCKADDR_IN sa;
    sa.sin_family = AF_INET;
    sa.sin_port = htons(port);
    sa.sin_addr.s_addr = inet_addr(ip.c_str());
 
    int optval = 1;
    if (setsockopt(s, SOL_SOCKET, SO_REUSEADDR, (char *)&optval, sizeof(optval)) == SOCKET_ERROR)
    {
        std::cout << "setsockopt error" << std::endl;
 
        return -1;
    }
 
    if (bind(s, (SOCKADDR *)&sa, sizeof(sa)) == SOCKET_ERROR)
    {
        std::cout << "bind error" << std::endl;
 
        return -1;
    }
 
    if (listen(s, 1) == SOCKET_ERROR)
    {
        std::cout << "listen error" << std::endl;
 
        return -1;
    }
 
    SOCKET ns;
 
    SOCKADDR_IN nsa;
    socklen_t sizeof_nsa = sizeof(nsa);
 
    std::cout << "wait for client...";
    ns = accept(s, (SOCKADDR *)&nsa, &sizeof_nsa);
    if (ns == INVALID_SOCKET)
    {
        std::cout << "error" << std::endl;
 
        return -1;
    }
    std::cout << "connected" << std::endl;
 
    while (true)
    {
        std::cout << "recv client message...";
        char server_message[1024];
        int res = recv(ns, server_message, sizeof(server_message), 0);
        if (res == SOCKET_ERROR)
        {
            std::cout << "error" << std::endl;
 
            return -1;
        }
        else if (!res)
        {
            std::cout << "disconnected" << std::endl;
 
            break;
        }
        std::cout << "ok" << std::endl;
        std::cout << "server message:" << std::string(server_message, res) << std::endl;
 
        std::string message;
        std::cout << "message or exit>";
        std::getline(std::cin, message);
 
        if (message == "exit") break;
 
        std::cout << "send message...";
        if (send(ns, message.c_str(), message.size(), 0) != message.size())
        {
            std::cout << "error" << std::endl;
 
            return -1;
        }
        std::cout << "ok" << std::endl;
    }
 
    closesocket(ns);
    closesocket(s);
 
    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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
//------------------------------------------------------------------------------
#include <iostream>
#include <winsock2.h>
#include <WS2tcpip.h>
#include <windows.h>
//------------------------------------------------------------------------------
int main(int argc, char* argv[])
{
    std::string ip;
    std::cout << "IP>";
    std::cin >> ip;
 
    int port;
    std::cout << "port>";
    std::cin >> port;
    std::cin.ignore();
 
    WSADATA wsa_data;
    if (WSAStartup(0x101, &wsa_data) || wsa_data.wVersion != 0x101)
    {
        std::cout << "WSAStartup error" << std::endl;
        
        return -1;
    }
 
    SOCKET s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
    if (s == INVALID_SOCKET)
    {
        std::cout << "socket error" << std::endl;
 
        return -1;
    }
 
    SOCKADDR_IN sa;
    sa.sin_family = AF_INET;
    sa.sin_port = htons(port);
    sa.sin_addr.s_addr = inet_addr(ip.c_str());
 
    std::cout << "wait for server...";
    while (true)
    {
        int connect_res = connect(s, (SOCKADDR *)&sa, sizeof(sa));
        if (!connect_res) break;
 
        Sleep(250);
    }
    std::cout << "connected" << std::endl;
 
    while (true)
    {
        std::string message;
        std::cout << "message or exit>";
        std::getline(std::cin, message);
 
        if (message == "exit") break;
 
        std::cout << "send message...";
        if (send(s, message.c_str(), message.size(), 0) != message.size())
        {
            std::cout << "error" << std::endl;
 
            return -1;
        }
        std::cout << "ok" << std::endl;
 
        std::cout << "recv server message...";
        char server_message[1024];
        int res = recv(s, server_message, sizeof(server_message), 0);
        if (res == SOCKET_ERROR)
        {
            std::cout << "error" << std::endl;
 
            return -1;
        }
        else if (!res)
        {
            std::cout << "disconnected" << std::endl;
 
            break;
        }
        std::cout << "ok" << std::endl;
        std::cout << "server message:" << std::string(server_message, res) << std::endl;
    }
 
    closesocket(s);
 
    WSACleanup();
 
    return 0;
}
2
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.03.2015, 09:08

Клиент-сервер
Дело такое: два компьютера соединены локальной сетью и имеют общую папку....

Исходники клиент-сервер?
Народ всем привет... скинте кому не сложно плиз листинг простейшего консольного...

TCP клиент/сервер
Здравствуйте, прошу вашей помощи) нашел реализацию TCP клиента/сервера, все...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru