Форум программистов
 
Расширенный поиск
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > C++ > C/C++ Сетевое программирование
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 05.06.2014, 11:38   #1
SAMOUCHKA
Форумчанин
 
Регистрация: 07.08.2011
Адрес: Димитровград
Сообщений: 464
Репутация: 33

skype: ilya10009
По умолчанию поддержка сети Qt

Надо написать приложения с поддержкой сети. Сразу скажу что в сетевом программировании полный ноль, по этому возникает несколько вопросов.

Код:

#include "myserver.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MyServer server(2323);
    server.show();

    return a.exec();
}

Это пример из книги Шилдта.
тут в конструктор передается номер порта. А по чему именно 2323? в этих цифра есть какой то смысл или они просто из головы взяты?

Теперь что касается клиента
В книге сказано что для реализации сервера надо создать объект QTcpSocket затем вызвать метод connectToHost() передав ему имя компьютера или его IP-адрес и номер порта
По чему в качестве имени компьютера передается значения "localhost"? в чем его смысл? Это наводит на мысль что то связанное с локальной сетью. А возможно осуществить соединение не по локальной сети, а через интернет?
Код:

#include "myclient.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    //MyClient w;
    //w.show();
    MyClient client("localhost", 2323);
    client.show();

    return a.exec();
}

Код:

MyClient::MyClient(const QString &strHost, int n_port, QWidget *parent)
    : QWidget(parent), next_block_size(0)
{
    tcp_socket = new QTcpSocket(this);
    tcp_socket->connectToHost(strHost, n_port);

    connect(tcp_socket, SIGNAL(connected()), SLOT(slotConnected()));
    connect(tcp_socket, SIGNAL(readyRead()), SLOT(slotReadyRead()));
    connect(tcp_socket, SIGNAL(error(QAbstractSocket::SocketError)),
            this, SLOT(slotError(QAbstractSocket::SocketError)));

    txt_info = new QTextEdit;
    txt_input = new QLineEdit;
    txt_name = new QLineEdit;

    txt_info->setReadOnly(true);

    QPushButton *cmd = new QPushButton("&Send");
    connect(cmd, SIGNAL(clicked()), SLOT(slotSendToServer()));
    connect(txt_input, SIGNAL(returnPressed()), this, SLOT(slotSendToServer()));

    // Layout
    QVBoxLayout *vb = new QVBoxLayout;
    vb->addWidget(new QLabel("<H1> Client </H1>"));
    vb->addWidget(new QLabel("Name"));
    vb->addWidget(txt_name);
    vb->addWidget(txt_info);
    vb->addWidget(txt_input);
    vb->addWidget(cmd);
    setLayout(vb);

}

Это еще не все по ходу дела будут еще вопросы.
__________________
eremeew.ilya@yandex.ru
SAMOUCHKA на форуме   Ответить с цитированием
Старый 05.06.2014, 13:36   #2
Пепел Феникса
Модератор
Заслуженный модератор
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Адрес: Москва
Сообщений: 20,960
Репутация: 3384

icq: 446843180
skype: phoenix_proger
По умолчанию

Цитата:
тут в конструктор передается номер порта. А по чему именно 2323? в этих цифра есть какой то смысл или они просто из головы взяты?
можно брать и из головы если свой протокол, если это HTTP сервер, то обычно это порт 80.
этот номер порта нужно будет указать клиенту.
Цитата:
По чему в качестве имени компьютера передается значения "localhost"? в чем его смысл? Это наводит на мысль что то связанное с локальной сетью. А возможно осуществить соединение не по локальной сети, а через интернет?
а погуглить...
localhost это псевдоним к адресу 127.0.0.1, что означает коннект сам к себе, сеть там вообще не используется.
через интернет коннект возможен, вы же пишите сейчас))

главное чтоб сервер был доступен.
__________________
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума   Ответить с цитированием
Старый 27.08.2014, 09:32   #3
SAMOUCHKA
Форумчанин
 
Регистрация: 07.08.2011
Адрес: Димитровград
Сообщений: 464
Репутация: 33

skype: ilya10009
По умолчанию

скажите как лучше передавать по сети базу данных SQL
__________________
eremeew.ilya@yandex.ru
SAMOUCHKA на форуме   Ответить с цитированием
Старый 28.08.2014, 09:02   #4
rrrFer
Санитар
Профессионал
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,563
Репутация: 941

icq: 395546218
skype: rrrfer.rrrfer
По умолчанию

База находится в файле и не обновляется во время передачи - значит можно передавать как файл.

Ну а в противном случае по строкам. Опять же база не должна обновляться во время передачи.
__________________
Мой блог о программировании и туризме
Надежный и недорогой хостинг сайтов (держу на нем свой блог и вам советую)
rrrFer вне форума   Ответить с цитированием
Старый 30.11.2014, 23:33   #5
SAMOUCHKA
Форумчанин
 
Регистрация: 07.08.2011
Адрес: Димитровград
Сообщений: 464
Репутация: 33

skype: ilya10009
По умолчанию

Цитата:
Сообщение от rrrFer Посмотреть сообщение
База находится в файле и не обновляется во время передачи - значит можно передавать как файл.

Ну а в противном случае по строкам. Опять же база не должна обновляться во время передачи.
Ну хорошо, буду передавать по строкам и БД в это время обновляться не будет.
Мне не надо все время передавать всю БД, а только изменения прошедшие с момента последней передачи. Например добавились или изменились некоторые строки.
__________________
eremeew.ilya@yandex.ru
SAMOUCHKA на форуме   Ответить с цитированием
Старый 02.12.2014, 20:23   #6
rrrFer
Санитар
Профессионал
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,563
Репутация: 941

icq: 395546218
skype: rrrfer.rrrfer
По умолчанию

Ну значит используй индексы в БД - они могут ускорить экпоненциально выборку данных за указанный период.

Запрашивай у базы данных за период и выдавай их клиенту. Делов-то...
__________________
Мой блог о программировании и туризме
Надежный и недорогой хостинг сайтов (держу на нем свой блог и вам советую)
rrrFer вне форума   Ответить с цитированием
Старый 06.12.2014, 13:43   #7
SAMOUCHKA
Форумчанин
 
Регистрация: 07.08.2011
Адрес: Димитровград
Сообщений: 464
Репутация: 33

skype: ilya10009
По умолчанию

да я даже всю БД, цылеком не могу передать. клиент то не знает сколько там строк
__________________
eremeew.ilya@yandex.ru
SAMOUCHKA на форуме   Ответить с цитированием
Старый 06.12.2014, 14:19   #8
Пепел Феникса
Модератор
Заслуженный модератор
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Адрес: Москва
Сообщений: 20,960
Репутация: 3384

icq: 446843180
skype: phoenix_proger
По умолчанию

а вы с БД как работаете то?

выборку же делаете так или иначе, вот эту выборку и передайте.
__________________
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума   Ответить с цитированием
Старый 06.12.2014, 14:28   #9
rrrFer
Санитар
Профессионал
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,563
Репутация: 941

icq: 395546218
skype: rrrfer.rrrfer
По умолчанию

SAMOUCHKA
Нахрена клиенту знать сколько там строк? - я написал выше что делать и как. Количество строк клиенту знать не нужно.
__________________
Мой блог о программировании и туризме
Надежный и недорогой хостинг сайтов (держу на нем свой блог и вам советую)
rrrFer вне форума   Ответить с цитированием
Старый 06.12.2014, 15:11   #10
SAMOUCHKA
Форумчанин
 
Регистрация: 07.08.2011
Адрес: Димитровград
Сообщений: 464
Репутация: 33

skype: ilya10009
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
а вы с БД как работаете то?

выборку же делаете так или иначе, вот эту выборку и передайте.
передать не проблема, в цикле передаю все строки.

Цитата:
Нахрена клиенту знать сколько там строк? - я написал выше что делать и как. Количество строк клиенту знать не нужно.
по чему не надо?

Как принять? От куда я знаю сколько строк надо принимать?
Хоть подскажите что ни будь на эту тему. гугление особо не помогло.

Надо быстрее сделать, дотянул до последнего, думал это просто
__________________
eremeew.ilya@yandex.ru

Последний раз редактировалось SAMOUCHKA; 06.12.2014 в 15:19.
SAMOUCHKA на форуме   Ответить с цитированием
Ответ



Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поддержка на экзамене Владилена Фриланс 1 15.06.2011 13:10
Справка и поддержка strong78 Операционные системы общие вопросы 12 24.01.2011 12:28
Socket: Подключение клиента из глобальной сети к серверу, расположенному в локальной сети Дамир Общие вопросы .NET 4 01.12.2010 13:12
Поддержка плагинов Altera Общие вопросы Delphi 4 29.07.2009 18:03
IT поддержка Москва Svetlana Voronets Работа на постоянной основе 0 29.11.2007 15:58




20:48.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

купить трафик


как улучшить посещаемость, а также решения по монетизации сайтов, видео и приложений

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru