Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 08.12.2016
Сообщений: 54

Как можно сделать чтоб сервер понимал что ему пришло файл или строка?

12.12.2016, 14:35. Показов 1608. Ответов 30
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как можно сделать чтоб сервер понимал что ему пришло файл или строка?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.12.2016, 14:35
Ответы с готовыми решениями:

Http-сервер: Как сделать чтоб этот сервер понимал файлы расширением .php и .aspx
Здравствуйте друзья Как сделать чтоб этот сервер понимал файлы расширением .php и .aspx? Простые странички он понимает нормально ...

Ребят дайте свой мудрый совет . Подскажите что можно сделать? Жить ему или нет?
Ребят помогите взгляните на это полено и скажи можно ли сделать что то с ним ?? денег на новы пока нету пытаюсь вылечит то что имею ....

Как сделать чтоб когда открываешь файл каждая строка задавалась переменным l1,l2,l3....и т.д.?
Как сделать чтоб когда открываешь файл каждая строка задавалась переменным l1,l2,l3....и т.д.?

30
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
14.12.2016, 16:32
Студворк — интернет-сервис помощи студентам
Ноль, что ли?
0
0 / 0 / 0
Регистрация: 08.12.2016
Сообщений: 54
14.12.2016, 16:38  [ТС]
да, так и выходит
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
14.12.2016, 18:25
Ну значит, отправка не идёт. Там смотри.
0
0 / 0 / 0
Регистрация: 08.12.2016
Сообщений: 54
14.12.2016, 19:42  [ТС]
проверяю, закомментила всё что добавила



C++ (Qt)
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
void Client:: textSend(void){
    qDebug() << "Client:: textSend";
    QByteArray sendline;
  //  QByteArray sendlin2;
    QByteArray sendline1(1,'1');
    sendline= widget.sendArea->text().toUtf8();
  //  sendline2=sendline+sendline1;
    
  //  write(socket_fd, sendline2.data(), sendline1.size());
   write(socket_fd, sendline.data(), sendline.size());
 
    widget.ViewTextBrowser->append(sendline.trimmed());
    widget.sendArea->clear();
}
 
void Client::recvData(void)
    {
 
    QByteArray recvBuffer;
     recvBuffer.resize(MAX_BUFFER);
 
 
     int dataread = ::read(socket_fd, recvBuffer.data(), recvBuffer.size());
 
     if(dataread > 0) {
         recvBuffer.resize(dataread);
         // qDebug() << "data read:" << recvBuffer;
         // if(recvBuffer.at(0)==1)
                                 {
         //   recvBuffer.remove(0,1);
         //   widget.ViewTextBrowser->append("data"+QString("<font color="red">%1</font>").arg(QString::fromUtf8(dataread)));
           widget.ViewTextBrowser->append("friend"+QString("<font color="red">%1</font>").arg(QString::fromUtf8(recvBuffer)));
           qDebug() << "data read:" << recvBuffer;
                                 }
                         //      else if(recvBuffer.at(0)==2)
                    //                {
        //    recvBuffer.remove(0,1);
         //   QString fileName=QFileDialog::getSaveFileName(this,QString::fromUtf8("Save file"),QDir::currentPath(),"Images(*);;All files(*.*)");
            //  QFile file(fileName);
 
         //    file.open(QIODevice::WriteOnly);
         //       file.write(recvBuffer);
 
         // file.close();
 
                  //                    }
 
                      }
       }
и теперь текст передается. но если я завтра буду защищать только передачу текста, я пролечу с защитой

Добавлено через 24 минуты
nmcf, проверила отправку

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void Client:: textSend(void){
    qDebug() << "Client:: textSend";
    QByteArray sendline;
    QByteArray sendline2;
    QByteArray sendline1(1,'1');
    sendline= widget.sendArea->text().toUtf8();
   sendline2=sendline1+sendline;
    
    write(socket_fd, sendline2.data(), sendline2.size());
 //  write(socket_fd, sendline.data(), sendline.size());
 
    widget.ViewTextBrowser->append(sendline.trimmed());
    widget.sendArea->clear();
}

и если прием я делаю так




C++ (Qt)
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
void Client::recvData(void)
    {
 
    QByteArray recvBuffer;
     recvBuffer.resize(MAX_BUFFER);
 
 
     int dataread = ::read(socket_fd, recvBuffer.data(), recvBuffer.size());
 
     if(dataread > 0) {
         recvBuffer.resize(dataread);
        
          if(recvBuffer.at(0)==1)
                                 {
          recvBuffer.remove(0,1);
       
           widget.ViewTextBrowser->append("friend"+QString("<font color="red">%1</font>").arg(QString::fromUtf8(recvBuffer)));
           qDebug() << "data read:" << recvBuffer;
                                 }
                   
                  
     
                          }
 
                      }
       }
то dataread выдает пустое сообщение

а если

прием делаю так

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void Client::recvData(void){
 
 
    QByteArray recvBuffer;
    recvBuffer.resize(MAX_BUFFER);
 
    int dataread = ::read(socket_fd, recvBuffer.data(), recvBuffer.size());
    if(dataread > 0) {
        recvBuffer.resize(dataread);
        widget.ViewTextBrowser->append("friend:   "+QString("<font color="red">%1</font>").arg(QString::fromUtf8(recvBuffer)));
        qDebug() << "data read:" << recvBuffer;
                     }
}
 
то на выводе получаю
 
1hello
Добавлено через 1 минуту
мне кажется тут надо другую команду подобрать, но какую?
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
14.12.2016, 20:56
Почему у тебя снова символ, а не код?
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
void Client:: textSend(void){
    qDebug() << "Client:: textSend";
    QByteArray sendline;
    sendline = widget.sendArea->text().toUtf8();
 
    sendline.insert(0, '\x1'); // <- только так
    
    write(socket_fd, sendline.data(), sendline.size());
 
    widget.ViewTextBrowser->append(widget.sendArea->text());
    widget.sendArea->clear();
}
Добавлено через 1 минуту
На принимающей стороне, соответственно проверка:
C++ (Qt)
1
if (recvBuffer.at(0) == 1)
0
0 / 0 / 0
Регистрация: 08.12.2016
Сообщений: 54
14.12.2016, 21:34  [ТС]
здорово! получилось!
только с файлом всё равно лажает прием. попробовала его поизменять, то у меня пустой файл создается и в него ничего не записывается, то просто ярлык с надписью формата jpeg и его открыть нельзя

C++ (Qt)
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
void Client::recvData(void)
    {
 
    QByteArray recvBuffer;
     recvBuffer.resize(MAX_BUFFER);
 
 
     int dataread = ::read(socket_fd, recvBuffer.data(), recvBuffer.size());
 
     if(dataread > 0) {
         recvBuffer.resize(dataread);
         // qDebug() << "data read:" << recvBuffer;
          if(recvBuffer.at(0)==1)
                                 {
          recvBuffer.remove(0,1);
         //   widget.ViewTextBrowser->append("data"+QString("<font color="red">%1</font>").arg(QString::fromUtf8(dataread)));
           widget.ViewTextBrowser->append("friend"+QString("<font color="red">%1</font>").arg(QString::fromUtf8(recvBuffer)));
           qDebug() << "data read:" << recvBuffer;
                                 }
                            else if(recvBuffer.at(0)==2)
                               {
        recvBuffer.remove(0,1);
         QString fileName=QFileDialog::getSaveFileName(this,QString::fromUtf8("Save file"),QDir::currentPath(),"Images(*);;All files(*.*)");
          QFile file(fileName);
 
        file.open(QIODevice::WriteOnly);
           file.write(recvBuffer);
 
       file.close();
 
                                 }
вот так получается пусто файл

C++ (Qt)
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
void Client::recvText(void){
 
}
 
void Client::sendFile(void){
 
QString filename =  QFileDialog::getOpenFileName(this,QString::fromUtf8("Open a file"), QDir::currentPath(),"Images(*.png *.xpm *.jpeg);;All files (*.*)");
 
 
QFile file(filename);
QByteArray filedata = file.readAll();
QByteArray filedata1;
filedata1.insert(0,'\2');
 
//filedata.insert(0,'\2');
write(socket_fd, filedata.data(), filedata.size());
 
 
 
 while(!file.atEnd()) {
 
   write(socket_fd, filedata.data(), filedata.size());
 
  //bzero(filedata.data(), filedata.size());
 }
 
}
 
что-то я переживаю за свой завтрашний день   :cry:
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
14.12.2016, 21:37
Неправильно символ записан. x где? Прочитай как задаются символы в шестнадцатеричном виде.
C++ (Qt)
1
filedata1.insert(0, '\x2');
0
0 / 0 / 0
Регистрация: 08.12.2016
Сообщений: 54
14.12.2016, 22:08  [ТС]
я конечно понимаю, я тугодум, но... файл всё равно пустой получается

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void Client::sendFile(void){
 
QString filename =  QFileDialog::getOpenFileName(this,QString::fromUtf8("Open a file"), QDir::currentPath(),"Images(*.png *.xpm *.jpeg);;All files (*.*)");
 
 
QFile file(filename);
QByteArray filedata = file.readAll();
QByteArray filedata1;
filedata1.insert(0,'\0x32');
 
//filedata.insert(0,'\2');
write(socket_fd, filedata1.data(), filedata1.size());
 
 
 
 while(!file.atEnd()) {
 
   write(socket_fd, filedata.data(), filedata.size());
 
  //bzero(filedata.data(), filedata.size());
 }
Добавлено через 5 минут
ой, файл вообще перестал передаваться
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
14.12.2016, 23:35
Скопируй это и ничего не меняй.
C++ (Qt)
1
filedata1.insert(0,'\x2');
0
0 / 0 / 0
Регистрация: 08.12.2016
Сообщений: 54
15.12.2016, 07:33  [ТС]
вот именно так
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void Client::sendFile(void){
 
QString filename =  QFileDialog::getOpenFileName(this,QString::fromUtf8("Open a file"), QDir::currentPath(),"Images(*.png *.xpm *.jpeg);;All files (*.*)");
 
 
QFile file(filename);
QByteArray filedata = file.readAll();
QByteArray filedata1;
filedata1.insert(0,'\x2');
 
//filedata.insert(0,'\2');
write(socket_fd, filedata1.data(), filedata1.size());
 
 
 
 while(!file.atEnd()) {
 
   write(socket_fd, filedata.data(), filedata.size());
 
  //bzero(filedata.data(), filedata.size());
 }
C++ (Qt)
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
void Client::recvData(void)
    {
 
    QByteArray recvBuffer;
     recvBuffer.resize(MAX_BUFFER);
 
 
     int dataread = ::read(socket_fd, recvBuffer.data(), recvBuffer.size());
 
     if(dataread > 0) {
         recvBuffer.resize(dataread);
         // qDebug() << "data read:" << recvBuffer;
          if(recvBuffer.at(0)==1)
                                 {
          recvBuffer.remove(0,1);
         //   widget.ViewTextBrowser->append("data"+QString("<font color="red">%1</font>").arg(QString::fromUtf8(dataread)));
           widget.ViewTextBrowser->append("friend"+QString("<font color="red">%1</font>").arg(QString::fromUtf8(recvBuffer)));
           qDebug() << "data read:" << recvBuffer;
                                 }
                            else if(recvBuffer.at(0)==2)
                               {
        recvBuffer.remove(0,1);
         QString fileName=QFileDialog::getSaveFileName(this,QString::fromUtf8("Save file"),QDir::currentPath(),"Images(*);;All files(*.*)");
          QFile file(fileName);
 
        file.open(QIODevice::WriteOnly);
           file.write(recvBuffer);
 
       file.close();
 
                                 }
 
 
 
 
                      }
 
 
       }
 
 
получается запись пустого файла
Добавлено через 6 часов 37 минут
nmcf,
проверила как отправляется. в цикле while(!file.atEnd()) ну или while(file.atEnd()) (использовала её вместо while(!feof(file)))
отправка не работает.
а если её убираю, то снова создается только пустой файл

C++ (Qt)
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
void Client::sendFile(void){
 
QString filename =  QFileDialog::getOpenFileName(this,QString::fromUtf8("Open a file"), QDir::currentPath(),"Images(*.png *.xpm *.jpeg);;All files (*.*)");
 
 
QFile file(filename);
QByteArray filedata = file.readAll();
//QByteArray filedata1;
//filedata1.insert(0,'\x2');
 
//filedata.insert(0,'\2');
//write(socket_fd, filedata1.data(), filedata1.size());
 
 
 
 //while(!file.atEnd()) {
filedata.insert(0,'\2');
   write(socket_fd, filedata.data(), filedata.size());
  widget.ViewTextBrowser->append("                            file was sended");
 
 //}
    
 
 
 
 
 
}
у меня сегодня защита в 14.00
0
 Аватар для Skjame
86 / 45 / 11
Регистрация: 20.12.2010
Сообщений: 217
Записей в блоге: 1
15.12.2016, 15:40
Опять 25. Чтобы прочитать файл тебе нужно его ОТКРЫТЬ!
Картинку лучше не вычитывать из QFIle, а сделать как я писал в другой теме!
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void Client::sendFile(void){
    QString filename =  QFileDialog::getOpenFileName(this,QString::fromUtf8("Open a file"), QDir::currentPath(),"Images(*.png *.xpm *.jpeg);;All files (*.*)");
    if ( filename.isEmpty() )
        return;
    QImage img_enrll(filename);
    QByteArray arr;
    QBuffer buffer(&arr);
    buffer.open(QIODevice::WriteOnly);
    QString format;
    int index = filename.lastIndexOf(".");
    for(int i = index + 1; i < filename.count(); i++)
        format.append(filename.at(i));
    img_enrll.save(&buffer, format);
    arr.insert(0,'\2');
    write(socket_fd, arr.data(), arr.size());
    widget.ViewTextBrowser->append("                            file was sended");
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.12.2016, 15:40

как сделать в этом коде чтоб конкретное число кнопок можно было задавать допустим 3 кнопки чтоб открывало
this.Load += new EventHandler(Form4_Load); button1.MouseHover += new EventHandler(button1_MouseHover); ...

Что можно сделать чтоб ФЧХ совпали?(
clc close all clear syms w w1 = logspace(-5,1,1000); den = ; num = ; sys = tf(num, den) = pa3del(den);

Что пришло (и пришло ли?) на смену DCOM/RPC подходу?
Коллеги, кто распределенные приложения пишет - что пришло (и пришло ли?) на смену DCOM/RPC подходу? Хочется в коде вызывать метод/функцию,...

Что можно сделать, чтоб флеш начал включатся?
Привет, флеш в браузере chromium включается. Так как браузер у меня устаревший, поэтому я хочу сначала решить проблему с обновление...

Что сделать, чтоб можно было разрабатывать компоненты EJB?
Подскажите кто знает, почему когда я открываю вкладку Enterprise в JBuilder5 она почти вся неактивна за исключением EAR и JMS, хотя я...


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

Или воспользуйтесь поиском по форуму:
31
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru