Просмотр сообщений
|
Страниц: 1 [2] 3 4 ... 6
|
18
|
Qt / Пользовательский интерфейс (GUI) / Re: Определение текущей ячейки в QTableView
|
: Июль 05, 2018, 09:24
|
определи по event->pos() C++ (Qt) void Widget::customMenuRequested(QPoint pos){ QModelIndex index=table->indexAt(pos); QMenu *menu=new QMenu(this); menu->addAction(new QAction("Action 1", this)); menu->addAction(new QAction("Action 2", this)); menu->addAction(new QAction("Action 3", this)); menu->popup(table->viewport()->mapToGlobal(pos));
|
|
|
19
|
Qt / Работа с сетью / Re: Сквозная передача данных через сервер.
|
: Июнь 27, 2018, 20:24
|
вот простой пример C++ (Qt) QByteArray ba; QDataStream s(&ba,QIODevice::ReadWrite); ba += "\n\n\n\n\n\n\n\r"; QVector<double> v; v.fill(-10,10); s.device()->seek(8); s << v;//serialization v.clear(); ba += "\n\n\n\n\n\n\n\r"; QByteArray b,a; a = ba.left(8); b = ba.right(8); qDebug() << a << b; s.device()->seek(8); s >> v;//deserialization qDebug() << v << v.size();
|
|
|
20
|
Qt / Работа с сетью / Re: Сквозная передача данных через сервер.
|
: Июнь 27, 2018, 03:39
|
Я так и не решил проблему пересылки в общем виде. По этому решил вместо держания на сервере всех пересылаемых классов. Создать структуры с нужными типами данных, а в пакете после размера посылать указатель какую структуры для десериализации использовать. Громоздкость несколько уменьшилась, но проблема в основе осталась.
по сети вы передаете байты и транспорту не важно, что внутри пакета. я бы сделал по типу Ethernet - преамбула + контр. сумма http://samoychiteli.ru/document33155.htmlили преамбула начала (16 байт к примеру) и маркер конца пакета(16 байт ) читаете первые и последние байты из ByteArray и все для сериализации в инете обычно json есть и для qt https://habr.com/post/147952/
|
|
|
23
|
Qt / Работа с сетью / Re: QTcpSocket и QThread
|
: Июнь 10, 2018, 14:19
|
а звчем это? в Loopback Example у меня на локалхосте скорость 200 МВ/с, если с внешним сервером не поднимается - канал передачи данных тормозит
|
|
|
26
|
Qt / Работа с сетью / Re: QTcpSocket и QThread
|
: Июнь 08, 2018, 23:46
|
как то ты странно пишешь C++ (Qt) socket->write('A');
делай краш тест на Си, без таймеров C #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <string.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <netdb.h> void error(const char *msg) { perror(msg); exit(0); } int main(int argc, char *argv[]) { int sockfd, portno; struct sockaddr_in serv_addr; struct hostent *server; char buffer[256]; if (argc < 3) { portno = 8000; server = gethostbyname("localhost"); } else { portno = atoi(argv[2]); server = gethostbyname(argv[1]); } sockfd = socket(AF_INET, SOCK_STREAM, 0); if (sockfd < 0) { error("CLI SOCKET"); } if (server == NULL) { error("CLI SERVER"); } bzero((char *) &serv_addr, sizeof(serv_addr)); serv_addr.sin_family = AF_INET; bcopy((char *)server->h_addr, (char *)&serv_addr.sin_addr.s_addr,server->h_length); serv_addr.sin_port = htons(portno); if (connect(sockfd,(struct sockaddr *) &serv_addr,sizeof(serv_addr)) < 0) error("CLI CONNECT"); while (1) { printf("<< "); bzero(buffer,256); fgets(buffer,255,stdin); if (strspn("quit",buffer) == 4) { close(sockfd); return 0; } if (send(sockfd,buffer,255,0) < 0) error("CLI WRITE"); bzero(buffer,256); if (recv(sockfd,buffer,255,0) < 0) error("CLI READ"); fprintf(stderr,">> %s",buffer); } close(sockfd); return 0; }
|
|
|
29
|
Qt / Работа с сетью / Re: QTcpSocket и QThread
|
: Июнь 08, 2018, 02:00
|
посылать запрос на следующий пакет только после приема и проверки текущего. вообще если тебе надо гнать цифру тут tcp и не нужен особо, я на udp делал, проще получается. а тестировал массивом - гнал массив например 40000 байт, его зеркалил обратно и сравнивал только я 2 сокета использовал - прием и передачя
|
|
|
30
|
Qt / Работа с сетью / Re: QTcpSocket и QThread
|
: Июнь 07, 2018, 18:16
|
у тебя однопоточный сервак, зачем тебе многопоточный клиент? вангую что железка работает на прерываниях и ты не дожидаешься окончания передачи пакета и даешь команду на передачу нового пакета посмотри рабочий пример
|
|
|
|
|