C++ (Qt)void MainWindow::sockASCANRead(){ QDataStream ds_ascan (socket); int i; for (;;) { i++; const auto bav = socket->bytesAvailable(); if (bav < 8192 ) { //если я сюда вставлю socket->readAll(); я буду терять почти все данные, точнее они просто не будут обрабатываться return; } QVector <int> ascanArr(2048); for (int i = 0; i < 2048; i++) { ds_ascan.setByteOrder(QDataStream::LittleEndian); ds_ascan >> ascanArr[i]; } /*QString strs; for (int j = 0; j<2048; j++) { strs = QString::number(ascanArr[i]); } QFile ff("out.txt"); if (ff.open(QIODevice::Append)) { QTextStream st (&ff); st << strs; ff.close(); }*/ // ===================== отрисовка графика ===================== //qDebug() << ascanArr; QVector <double> x(2048), y(2048); for (int i=0; i<2048; i++) { x[i] = i; y[i] = ascanArr[i]; } // создаем график и добавляем данные: ui->widget->addGraph(); ui->widget->graph(0)->setData(x, y); // задаем имена осей координат ui->widget->xAxis->setLabel("Время"); ui->widget->yAxis->setLabel("Амплитуда"); // задаем размеры осей ui->widget->xAxis->setRange(0, 2048); ui->widget->yAxis->setRange(-2048, 2048); ui->widget->replot(); // ======================== конец отрисовки ===================== } }
Cchar *next_block = "accept"; //(6 байт)int n[2048];//далее заполню массив;for (int i = 0; i < 2048; i++) n[i] = rand() % 4000 - 2000;err = tcp_write (tpcb, next_block, sizeof(next_block),1)err = tcp_output (tpcb);err = tcp_write (tpcb, next_block, 2048 * sizeof(int), 1)
C++ (Qt) MainWindow :: readSocket(){ for(;;) { if(socket->bytesAvailable() < 6) return; QByteArray ASData = socket->read(6); QString str = "accept", strData = ASData;// если моя не спящая уже 2 недели голова правильно помнит, то в QString можно без проблем присвоить //QByteArray if (str == strData) return; if(socket->bytesAvailable() < 8192) return; ASData = socket->read(8192); QDataStream stream; stream << ASData; QVector <int> arrData(2048); for (int i = 0; i < 2048; i++) { stream.setByteOrder(QDataStream::LittleEndian); stream >> arrData[i]; } ...//дальше там отрисовка, запись в файл и т.д. }}
Cwhile (1) {if (TcpFastTmrFlag) {tcp_fasttmr();TcpFastTmrFlag = 0;}if (TcpSlowTmrFlag) {tcp_slowtmr();TcpSlowTmrFlag = 0;}xemacif_input(netif);transfer_data();}
C++ (Qt)void MainWindow::startSending(){ // это была попытка запихнуть сокет в поток, кстати без успешная, чет нифига не работало... //ascanobj.setA_socket(socket); //ascanobj.setrunning(true); //thread1.start(); //это таймер, он работает, но не больше 200-210 запросов в секунду... надо 600 ui->startBtn->setEnabled(false); ui->stopBtn->setEnabled(true); timer.start(ui->speedRecive->value());}void MainWindow::stopSending(){ //ascanobj.setrunning(false); ui->stopBtn->setEnabled(false); ui->startBtn->setEnabled(true); timer.stop(); /* timer_2.stop(); */} void MainWindow::sendSocket(){ QByteArray getASCAN = 0; char ASCAN = 'A'; getASCAN += ASCAN; socket->write(getASCAN);}
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;}