Форум программистов, компьютерный форум, киберфорум
C++: Сети
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
C++ Ошибка при компиляции в dev-c++ Привет всем, пользуюсь dev-c++ 4.9.9.2 portable. Как-то раз случайно снес с флешки его, мне скинули новую, теперь при попытке компиляции выскакивает ошибка cannot find -lbgi. Гугл ничего не выдал, или может плохо искал. Может кто-то что-то подскажет? И еще если можно пример удобного, не нагруженного, бесплатного/платного компилятора, с которым можно работать на флешке. Это так на всякий пожарный.... https://www.cyberforum.ru/ cpp-networks/ thread1106564.html TCP сервером! (нужен многопотоковый) C++
Необходимо обработать несколько пользователей, т.е. что бы несколько пользователей зашли на сервер. Проблемы возникают как только на сервер заходит более одного клиента, сервер не падает, но работает не корректно как бы хотелось! Сервер: #include <cstdio> #include <WinSock2.h> #include <Windows.h> #include <iostream> #include "fun_console.h" #include <conio.h> #include <ctype.h> using...
C++ Получение снимка (кадра) с IP камер Доброго времени суток! Столкнулся с проблемой получения снимка с камеры. Вот что я делал: if (name.Pos("цех")) { //videoconfiguration.cgi IdHTTP1->IOHandler = IdIOHandlerStack1; IdHTTP1->HandleRedirects=true; IdIOHandlerStack1->DefaultPort = 80; IdHTTP1->Request->Host= host; //host = адрес IP камеры IdHTTP1->Request->Username = "login"; https://www.cyberforum.ru/ cpp-networks/ thread1104896.html C++ Альтернатива winsock2. Или я не вехал в boost::asoi Всем привет. Написал свой сервер и клиент на винсок2 с горем пополам. Но я так немного пораскинув что все таки надо что-то делать с бустом. 1. У меня есть весь буст что с ним дальше делать? 2. Как подлючить буст.асои в vs не весь буст и использовать только ее. 3. Есть ли альтернатива винсокет и буст::асои? https://www.cyberforum.ru/ cpp-networks/ thread1103832.html
Работа с Socet для создания чата на с++ C++
Здравствуйте форумчане, совсем недавно я загорелся желанием создать чат на с++, но столкнулся с проблемой что в сети нету нормального описания как работать с сокетами. Скиньте хорошие туториалы или исходники с описаниями как работать с сокетами.
C++ Клиент и сервер через порты завершения Здравствуйте. Есть код сервера и клиента. Клиент по логике должен отправлять сообщение серверу, а он должен отправлять это сообщение всем подключённым клиентам. Но почему то обратно сообщение не посылается. Подскажите в чём проблема. Клиент: #include <stdio.h> #include <string.h> #include <winsock2.h> #include <windows.h> https://www.cyberforum.ru/ cpp-networks/ thread1101730.html
C++ Посоветуйте книгу по работе с сетями на C++/C# посоветуйте книгу по с++ или с#, что-нибудь по работе с сетями Добавлено через 14 часов 10 минут upup Добавлено через 8 часов 4 минуты upup https://www.cyberforum.ru/ cpp-networks/ thread1101710.html C++ boost.async
Здравствуйте, подскажите пожалуйста как можно красиво передать большой файл используя асинхронный подход в бусте? Раньше у меня буффер был константного размера, но вдруг придут данные которые не влезут в буффер...
C++ Передача логина и пароля ftp-серверу https://www.cyberforum.ru/ cpp-networks/ thread1100857.html
Здравия желаю, товарищи. После написания батника для сбора информации о системе и отправления данных на сервер решил написать подобную программу на сях с дополнениями. Проходит весь тот же процесс, используя функцию system() и все из нее вытекающее. Так вот, столкнулся с проблемой: После передачи команды ftp > open <ip> необходимо ввести логин и пароль пользователя, но не вручную, а, так...
C++ Преобразование структуры в байтовый массив Нужно преобразовать структуру данных в байтовый массив для передачи на сервер от клиента и так же обратно, используя сокеты VS2013 Добавлено через 12 минут И нужно, соответственно обратно, из байтового массива в структуру. или класс. или обьединение. https://www.cyberforum.ru/ cpp-networks/ thread1099948.html
C++ Посоветуйте как создать точку доступа wifi в VS C++
какую литературу можно почитать? может быть есть примеры? нужно создать обычную wi-fi точку, каким образом это сделать? были мысли через winsock, но тогда придется и программу клиент писать, что не хотелось бы...
C++ CRC 8-ми битных чисел Извиняюсь за наглость. Кто поможет в написании алгоритма вот для этого: "Для примера рассчитаем контрольную сумму нескольких 8-битных слов: 0x39, 0xf8, 0x14, 0xc2. Находим их сумму с поразрядным дополнением: 0x39 + 0xf8 = 0x131 → 0x31 ; 0x31 + 0x14 = 0x046 → 0x46 ; 0x46 + 0xc2 = 0x108 → 0x08 . Теперь находим поразрядное дополнение до единицы полученного результата: 0x08... https://www.cyberforum.ru/ cpp-networks/ thread1098154.html
0 / 0 / 2
Регистрация: 17.12.2013
Сообщений: 11
0

Чат на C++ под Linux - C++ - Ответ 5836397

27.02.2014, 14:01. Показов 1737. Ответов 1
Метки (Все метки)

Author24 — интернет-сервис помощи студентам
При программировании возникла проблема что соединение закрывается не в нужный момент. Еще возникла проблема при считывании строки в вектор. Вот мой говнокод, не судите строго. Любые комментарии приветствуются
Код soket.h:
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
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
#include <sys/socket.h>
#include <sys/types.h>
#include <sys/un.h>
#include <iostream>
#include <vector>
#include <fcntl.h>
#include <algorithm>
#include <set>
 
#define PORT 5000 
using namespace std;
 
class Client{
 
public:
        vector<char> name;
    int sock;
    struct sockaddr_un address;
    void show_vector( vector<char>&a)
    {
        for (vector<char>::iterator it = a.begin() ; it!=a.end() ; ++it)
            cout<<*it;
    }
    Client(vector<char> name){
        cout<<"Hey ";
        show_vector(name);
        cout<<",what's up?"<<endl;
    }
    ~Client(){
        cout<<"Bye"<<endl;
    }
    
    int create_socket(){
            sock = socket(AF_UNIX, SOCK_STREAM,0);
        address.sun_family = AF_UNIX;
        strcpy(address.sun_path, "server_socket");
        int len = sizeof(address);
        int result = connect(sock, (struct sockaddr *)&address, len);
        if(result==-1){
            cout<<("oops: client");
            return 0;
        }
    }
    
    int send_message(char *message, int size){
        send(sock, message, size, 0);
        return 0;
    }
 
    int send_message(vector<char> message, int size){
        char* str=&message[0];
        cout<<"sending="<<str<<endl;
        cout<<"size="<<message.size()<<endl;
        send(sock, str, size, 0);
        cout<<"send="<<str<<endl;
        return 0;
    }
 
    char* recv_message(){   
        char buf[1024];
        recv(sock, buf, sizeof(buf), 0);
        return buf;
    }
    
    int close_socket(){
        return close(sock);
    }
    
};
class Server{
 
public:
    int  server_sock;
    struct sockaddr_un server_address;
    set<int> clients;
    Server(){
        unlink("server_socket");
        cout<<"Running"<<endl;
    }
    ~Server(){
        unlink("server_socket");
        cout<<"Stopping"<<endl;
    }
    
    int create_socket(){
        server_sock=socket(AF_UNIX, SOCK_STREAM,0);
        fcntl(server_sock, F_SETFL, O_NONBLOCK);
        server_address.sun_family = AF_UNIX;
        strcpy(server_address.sun_path,"server_socket");
        int server_len=sizeof(server_address);
        bind(server_sock, (struct sockaddr *)&server_address, server_len);
        listen(server_sock,2);
        return 0;
    }
    
    /*int get_client(){
        cout<<"new connection "<<sock<<endl;
        return 0;
 
    }*/
    
    int show_all(){
 
        return 0;
    }
    
    int get_connect(){
        char buf[50]={0};   
        fd_set readset;
        fd_set writeset;
        FD_ZERO(&readset);
        FD_ZERO(&writeset);
        FD_SET(server_sock,&readset);
        for(set<int>::iterator it = clients.begin(); it != clients.end(); it++)
        {
                FD_SET(*it, &readset);
            FD_SET(*it, &writeset);
        }   
        timeval timeout;
            timeout.tv_sec = 30;
            timeout.tv_usec = 0;
        int mx = max(server_sock, *max_element(clients.begin(), clients.end()));
        if(select(mx+1, &readset, &writeset, NULL, &timeout) <= 0)
            {
                cout<<"select error"<<endl;
            return 0;
        }
        if(FD_ISSET(server_sock, &readset))
            {
                 // Поступил новый запрос на соединение, используем accept
            int sock = accept(server_sock, NULL, NULL);
            
                    if(sock < 0)
            {
                        cout<<"error accept"<<endl;
                        return 0;
            }
                    fcntl(sock, F_SETFL, O_NONBLOCK);
            clients.insert(sock);
 
            //имя клиента
            int bytes_read = recv(sock, buf, 10, 0);
            cout<<"recv name="<<buf<<" - "<<sock<<endl;
            buf[1]=0;
            }
        for(set<int>::iterator it = clients.begin(); it != clients.end(); it++)
            {
                    if(FD_ISSET(*it, &readset))
            {
                int to;
                char str[2]={0};
 
                //получили адрес сокета куда отправлено сообщение
                int bytes_read = recv(*it, str, 2, 0);
                cout<<"bytes_read="<<bytes_read<<endl;
                cout<<"recv address="<<str<<endl;
                to=atoi(str);
                cout<<"to="<<to<<endl;
 
                // Поступили данные от клиента, читаем их
                buf[0]=0;
                bytes_read = recv(*it, buf, 50, 0);// Проблема! Получаем что соединение закрыто
                cout<<"bytes_read="<<bytes_read<<endl;
                cout<<"message="<<buf<<endl;
                cout<<"from soket="<<*it<<endl;
 
                if(bytes_read <= 0)
                {
                    // Соединение разорвано, удаляем сокет из множества
                    close(*it);
                    clients.erase(*it);
                    continue;
                }
 
                // Отправляем данные клиенту
                send(to, buf, 1024, 0);
            }   
            }
    }
    int close_socket(){
        return close(server_sock);
    }
};

Код client.cpp:

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
#include "soket.h"
vector<char> get_message(){
               char s;
               vector <char> name;
               while ((cin >> s) && (s!= '0') ) name.push_back(s);//Проблема! если писать s!= '\n' то не воспринимает
               return name;
        }
 int main(){
    cout<<"Put your name please>>";
    vector<char> name=get_message(); 
    Client client1(name);
    client1.create_socket();
    client1.send_message(name,10);//посылаем имя клиента
    char str[2];    
    cout<<"client socket="<<client1.sock<<endl;
    while(1){
        char buf[50];
        int user;
        cout<<"to whom?>>";
        cin>>user;
        str[0] = user + '0';
        str[1] = 0;
        cout<<"to user="<<str<<endl;
        client1.send_message(str,2);//посылаем номер сокета клиента
        cout<<">>";
        vector<char> message=get_message();
        client1.send_message(message,50);//посылка сообщения
        cout<<"sended\n";       
        cout<<client1.recv_message();
    }
    cout<<"crap\n";
    client1.close_socket();
    return 0;
}
Код server.cpp:
C++
1
2
3
4
5
6
7
8
9
#include "soket.h"
int main(){
    Server server;
    server.create_socket();
    while(1){
        server.get_connect();
}
    server.close_socket();
}


Вернуться к обсуждению:
Чат на C++ под Linux C++
0
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.02.2014, 14:01
Готовые ответы и решения:

QFile.open() под Linux работает, под windows нет
QDateTime dt = QDateTime::currentDateTime(); logfilepath = &quot;log_&quot; + dt.toString() + &quot;.txt&quot;; ...

Можно ли под Windows поставить какой - то комплект Qt, чтоб параллельно компилить под Win и Linux?
Ну как бЭ вопрос в шапке :) Тоесть не имея на компе Linux, компилировать под виндой два выходных...

Компиляция Builder'овского проекта под Linux, (и освоение Linux после Builder'a)
Есть не очень маленький проект, написанный в винде на Builder'e. 1) Сложно ли его будет...

Подскажите ide c# под linux чтобы компилировался файл для linux
Подскажите ide c# под linux чтобы компилировался файл для linux не как в monodevelop

1
27.02.2014, 14:01
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.02.2014, 14:01
Помогаю со студенческими работами здесь

Нужен компилятор под linux mint или linux ubuntu
Нужен компилятор под linux mint или linux ubuntu. Желательно голенький компилятор без редактора, и,...

Перенос программы под Linux: номера системных вызовов в DOS и Linux не совпадают
Здравствуйте, уважаемые программисты всея форума! Доброго вам времени суток! =) Есть у меня...

linux+avr+asm+debug=IDE под linux
Здравствуйте! Допрашиваю Гошу с пристрастием уже два дня... Хочется аналог AVR Studyo под линукс...

Копирование файлов с машины под Linux на машину под Windows Server
Добрый день! Возникла такая проблема. Не знаю как подступиться к скрипту. Задача следующая:...

Консультант+ на машине под Linux по сети с машины под Windows
Есть такой сложный вопрос, нужно запустить Консультант+ сетевая версия на Linux. При этом сам...

Чтобы приложение, разработанное на С#, работало и под Linux и под MacOS
У меня вопрос. Есть приложение разработанное на С# на .Net Framework 2.0 в среде VS2010 Express....

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru