Форум программистов, компьютерный форум, киберфорум
C++: Сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
4 / 4 / 6
Регистрация: 17.09.2012
Сообщений: 325

откоментируйте пожалуйста

06.11.2013, 01:46. Показов 672. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
вот есть програмка можете написать коментарии хотя бы к основным действиям пожалуйста, а по мелочи я и сам розберусь, ну тоесть что какая строчка делает, ну я впринцепи многое понимаю, просто хочется увидеть вдруг я ошибаюсь
и можете подсказать это надо делать в висуал студио? тоесть создать форму с кнопками или как?
вот весь набор что есть
Laba.zip
в чем это нужно собрать во едино? подскажите пожалуйста хоть
TCP-Client-Server.pro
C++
1
2
3
4
5
6
7
8
9
10
QT       += core gui network
TARGET    = tcp-cs
TEMPLATE  = app
 
SOURCES  += main.cpp\
            mainwindow.cpp
 
HEADERS  += mainwindow.h
 
FORMS    += mainwindow.ui
main.cpp
C++
1
2
3
4
5
6
7
8
9
10
#include "mainwindow.h"
 
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
 
    return a.exec();
}
mainwindow.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
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
 
#include <QtGui/QApplication>
#include <QMainWindow>
#include <QtNetwork>
#include <QTcpSocket>
#include <QHostAddress>
#include <QObject>
#include <QByteArray>
#include <QBitArray>
#include <QDebug>
#include <QFile>
#include <QCoreApplication>
#include <QTextStream>
 
namespace Ui {
    class MainWindow;
}
 
class QTcpServer;
 
class MainWindow : public QMainWindow
{
    Q_OBJECT
public:
    explicit MainWindow(QWidget *parent = 0);
    QString currentTime();
    ~MainWindow();
private slots:
    void on_starting_clicked();
    void on_stoping_clicked();
    void newuser();
    void newstate();
    void reconnect();
    void establish();
    void slotReadClient();
private:
    bool server_status;
    QBitArray packets_with_errors;
    int packets_sent_number;
    int packets_not_sent;
    int packets_total;
 
 
    int idusersocs;
 
    Ui::MainWindow *ui;
    QTcpServer *tcpServer;
    QTcpSocket *clientSocket;
 
    QMap<int,QTcpSocket *> SClients;
};
#endif // MAINWINDOW_H
mainwindow.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
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
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
#include "mainwindow.h"
#include "ui_mainwindow.h"
 
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}
 
MainWindow::~MainWindow()
{
    delete ui;
    // Server status by default
    server_status = false;
    // We should know which packet failed
    packets_with_errors[12];
    packets_with_errors.fill(false);
}
 
void MainWindow::establish()
{
    // Creating tcpServer object for further use
    tcpServer = new QTcpServer(this);
 
    // If tcpServer sends newConnection signal, we shoul goto newuser slot
    connect(tcpServer, SIGNAL(newConnection()), this, SLOT(newuser()));
 
    // Connection troubleshooting. Set listen to localhost: "free port", at first if.
    // tcpServer->listen returns false on error
    if (!tcpServer->listen(QHostAddress::LocalHost, 33333) && server_status == false) {
        qDebug() <<  "[FAIL] Unable to start the server: " << tcpServer->errorString();
        ui->textinfo->append("FAIL] Unable to start the server: "+tcpServer->errorString());
    } else {
        // Connection established, so set server status to true
        server_status = true;
 
        // Check LISTEN state
        bool isListenState = tcpServer->isListening();
        QString protocolVersion;
 
        // Get current host (localhost actualy) adress
        QString serverAdress = tcpServer->serverAddress().toString();
 
        // LISTEN state always should be TRUE in this secion
        if (isListenState) {
            qDebug() << "[INFO] LISTEN STATE";
            ui->textinfo->append("[INFO] LISTEN STATE");
        }
 
        // Verify what IP protocol version is in use by TCP connection
        if (tcpServer->serverAddress().operator ==(QHostAddress::LocalHostIPv6))  
             protocolVersion = "[INFO][USED] IPv6";
        else if (tcpServer->serverAddress().operator ==(QHostAddress::LocalHost)) 
             protocolVersion = "[INFO][USED] IPv4";
        else protocolVersion = "[INFO][USED] Unknown protocol version";
 
        // Connection status to qDebug
        qDebug() << protocolVersion;
        qDebug() << "[INFO] Socket listening on <localhost>,<port>: " << serverAdress << ", \"" << tcpServer->serverPort() << '\"';
        qDebug() << "[INFO] Maximum pending accepted connections <number>: " << tcpServer->maxPendingConnections();
        qDebug() << "[INFO] Waiting for connection";
 
        // Connection status to GUI
        ui->textinfo->append(protocolVersion);
        ui->textinfo->append("[INFO] Socket listening on <localhost>:<port>: "+QObject::tr("%1:%2").arg(serverAdress).arg(tcpServer->serverPort()));
        ui->textinfo->append("[INFO] Maximum pending accepted connections <number>: "+QObject::tr("%1").arg(tcpServer->maxPendingConnections()));
        ui->textinfo->append("<font color='green'>[INFO] Waiting for connection</font>");
 
        // Creating socket for our connection. ReadWrite mode is set.
        clientSocket = new QTcpSocket(this);
        clientSocket->QIODevice::open(QIODevice::ReadWrite);
 
        // Can't check socket by signal in this case. qDebug output only.
        qDebug() << "[INFO] " << clientSocket->QAbstractSocket::state();
 
    }
}
 
void MainWindow::on_starting_clicked()
{
    //Variables 
    packets_sent_number = 0;
    packets_not_sent = 0;
    packets_total = 12;
 
    //Create conncection
    establish();
}
 
void MainWindow::on_stoping_clicked()
{
    if(server_status == true){
        foreach(int i,SClients.keys()){
            QTextStream os(SClients[i]);
            os.setAutoDetectUnicode(true);
            os << QDateTime::currentDateTime().toString() << "\n";
            SClients[i]->close();
            SClients.remove(i);
        }
        server_status = false;
        tcpServer->close();
        ui->textinfo->append("[INFO] Server have been stopped");
        qDebug() << "[INFO] Server have been stopped";
    }
 
    // Write to file
    QFile file("info.txt");
    file.open(QIODevice::WriteOnly | QIODevice::Text);
    QTextStream out(&file);
    out << "Packets should arrive <count>:    " << packets_total << endl;
    out << "Analyzed packets <count>:         " << packets_sent_number << endl;
    out << "Not transmitted packets <count>:  " << packets_not_sent<< endl;
    // Type to file which packet contains error
    for (int i = 0; i < packets_total; i++) if (packets_with_errors[i] == true) out << "Error occured at packet <number>: " << i << endl;
}
 
 
void MainWindow::reconnect ()
{
    if(server_status == true){
        // Clearing our <QMap> SClients
        foreach(int i,SClients.keys()){
            QTextStream os(SClients[i]);
            os.setAutoDetectUnicode(true);
            os << QDateTime::currentDateTime().toString() << "\n";
            SClients[i]->close();
            SClients.remove(i);
        }
 
        // Terminating TCP server
        tcpServer->close();
        server_status = false;
 
        // Number of packages sent. Connection close message to qDebug
        qDebug() << "[INFO] Packets sent: " << packets_sent_number;
        qDebug() << "[INFO] Connection closed";
        qDebug() << "[INFO] Sending another packet(s)";
        qDebug() << "\n";
 
        // Same to GUI
        ui->textinfo->append(QObject::tr("<font color='green'>[INFO] Packets sent: %1 </font>").arg(packets_sent_number));
        ui->textinfo->append("<font color='red'>[INFO] Connection closed</font>");
        ui->textinfo->append("<font color='green'[INFO] Sending another packet(s)</font>");
        ui->textinfo->append("\n");
 
        // Ready for reconnecting now
        establish();
    }
}
 
void MainWindow::newuser()
{
    if(server_status == true){
        // Connection ESTABLISHED state in this section
        qDebug() << "[INFO] Connection ESTABLISHED";
        ui->textinfo->append("[INFO] Connection ESTABLISHED");
 
        // Returns the next pending connection as a connected QTcpSocket object.
        clientSocket=tcpServer->nextPendingConnection();
 
        // Get descriptor. Removing from map when closing socket
        idusersocs=clientSocket->socketDescriptor();
        SClients[idusersocs]=clientSocket;
 
        // Trying to catch state signal
        connect(clientSocket, SIGNAL(stateChanged(QAbstractSocket::SocketState)), this, SLOT(newstate()));
 
        // Socket parametres
        qDebug() << "[INFO] Socket <descriptor>,<physical adress>: " << idusersocs << "," << SClients[idusersocs];
 
        // Trying to catch readyRead socket signal, then connect it with slotReadClient()
        connect(SClients[idusersocs],SIGNAL(readyRead()),this, SLOT(slotReadClient()));
    }
}
 
QString MainWindow::currentTime()
{
    return QTime::currentTime().toString("hh:mm:ss");
}
 
void MainWindow::newstate()
{
    QString theTime = currentTime();
    // TO DEBUG PRINT ONLY
    qDebug() << "[INFO][" << theTime << "] " << clientSocket->state();
}
 
void MainWindow::slotReadClient()
{
    // Get socket object sender.
    // Returns pointer to object, which send the signal
    clientSocket = (QTcpSocket*) sender();
 
    // Send data to client
    QTextStream out(clientSocket);
    QDataStream out_bin(clientSocket);
    switch (packets_sent_number) {
        case 0:
            out << 80;
            break;
        case 1:
            out << 808;
            break;
        case 2:
            out << 1129;
            break;
        case 3:
            out << 1130;
            break;
        case 4:
            out << 60;
            break;
        case 5:
            out_bin << (quint8) 3;
            break;
        case 6:
            out_bin << (quint8) 18;
            break;
        case 7:
            out << 1500;
            break;
        case 8:
            out_bin << (quint16) 65087;
            break;
        case 9:
            out_bin << (quint8) 24;
            break;
        case 10:
            out_bin << (quint16) 70719;
            break;
        case 11:
            out_bin << (quint64) 4226812920;
            break;
                default:
                    out << "Nothing to send more!";
                    break;
    }
    // 12 packets should be sent. Client should request each of them
    packets_sent_number++;
 
    // Checking if packet have been sent through connection.
    // Number of packet should be written to array
    if(clientSocket->ConnectionRefusedError)
    {
        packets_not_sent++;
        packets_with_errors[packets_sent_number] = true;
    }
 
    // Closing client socket
    clientSocket->close();
 
    // Removing Sclients[idusersocs]
    SClients.remove(idusersocs);
 
    // Recreate connection
    reconnect();
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.11.2013, 01:46
Ответы с готовыми решениями:

Откоментируйте программу!
#include &lt;iostream&gt; #include &lt;iomanip&gt; #define N 8 using namespace std; int main() {setlocale (LC_ALL,&quot;Russian&quot;); ...

Разлогинить пользователя удалив сессию (откоментируйте)
Дайте комментарии к такому подходу: 1 При авторизации пользователь получает данные для куков и записываются все данные из БД в сессию....

Ребята пожалуйста эти лабораторные работы пожалуйста я не понимаю как их делать
Пожалуйста

4
43 / 40 / 2
Регистрация: 21.09.2009
Сообщений: 145
06.11.2013, 08:39
итернал в комерц
0
4 / 4 / 6
Регистрация: 17.09.2012
Сообщений: 325
06.11.2013, 12:08  [ТС]
ок, ну тогда хоть подскажите файл PRO и VisualStudio.10.0
чем они вопще создаются? или открываются? я просто еще не когда в висуал не писал, только консольные приложения
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
08.11.2013, 22:08
Это проект на Qt
1
4 / 4 / 6
Регистрация: 17.09.2012
Сообщений: 325
08.11.2013, 22:24  [ТС]
спасибо, но я уже разобрался, ну покрайней мере от куда это
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.11.2013, 22:24
Помогаю со студенческими работами здесь

Пожалуйста покажите где ошибка и как ее исправить. Пожалуйста
#include &lt;iostream&gt; #include &lt;math.h&gt; #include &lt;stdlib.h&gt; #include &lt;time.h&gt; #include &lt;iomanip&gt; #include &lt;cstdlib&gt; #include...

Ребят, пожалуйста! Кто может выполнить задание пожалуйста?
1. Создать таблицу, которая содержит сведения о работе обменного пункта за день (продажа и покупка одного вида валюты). Структура...

Ребят пожалуйста отредактируйте программу пожалуйста Assembler
2.4. Дан двумерный массив целых чисел размером m*n. 1-Заменить минимальный по модулю элемент каждого столбца на противоположный. ...

Друзья, пожалуйста! Нужно только в С++, пожалуйста
Задача 24. Даны два целых числа A и B (A &lt; B). Найти произведение всех целых чисел от A до B включительно. Задача 27. Два целых числа X и...

пожалуйста нужна база данных acces на тему "телефон" скиньте пожалуйста
вот само задание


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru