Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. Romanian
  4. QT client to C server

QT client to C server

Scheduled Pinned Locked Moved Romanian
23 Posts 2 Posters 13.5k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • C Offline
    C Offline
    cincirin
    wrote on 13 Jan 2014, 08:09 last edited by
    #11

    bq. La linia acesta la un moment dat o sa iti crape clientul.

    Sorry, my bad, am fost furat de peisaj :-)
    Nu o sa crape, dar buffer [5] already are valoarea '\0' nu trebuie sa mai scrii manual. La linia 7 faci ca buffer sa aibe valoare 't', 'e', 'x', '\n'. Asta doresti ?

    1 Reply Last reply
    0
    • K Offline
      K Offline
      KupiKupi
      wrote on 14 Jan 2014, 20:24 last edited by
      #12

      Nu e chiar o rezolvare, de vina era serverul meu C asa ca am decis sa fac altul in QT iar acum functioneaza fara sa fac modificari. Partea cu write spre server este pur simbolica pentru moment. Multumesc pentru sesizarea cu 't' 'e' 'x' '\n', nu asta doream sa se intample. Totusi, cum folosesc acelasi socket? Momentan eu am in clasa Login declarat socketul pSocket. Vreau sa il folosesc si in clasele fotbal si tenis, dar primesc eroare de genul pSocket was not declared in this scope. Partea de cod de mai sus este functionala dar eu nu vreau sa se conecteze la host, intrucat asta s-a intamplat deja in login. Vreau doar sa folosesc acelasi socket pentru transmitere de date.

      1 Reply Last reply
      0
      • C Offline
        C Offline
        cincirin
        wrote on 17 Jan 2014, 19:55 last edited by
        #13

        Buna, scuze pt. intarziere, am fost f. ocupat zilele acestea.

        bq. Vreau sa il folosesc si in clasele fotbal si tenis, dar primesc eroare de genul pSocket was not declared in this scope.

        Exista mai multe posibilitati, depinde de softul pe care vrei sa il implementezi. Poti deriva clasele fotbal si tenis din login, si o sa ai acces la socketul din login. Poti sa pasezi login object in constructorii de la tenis, fotbal. Poti avea login class ca si singleton pattern, etc ...

        1 Reply Last reply
        0
        • K Offline
          K Offline
          KupiKupi
          wrote on 18 Jan 2014, 13:58 last edited by
          #14

          Din pacate cunostintele mele de OOP sunt reduse, deci as vrea sa imi recomanzi cea mai simpla solutie. Am incercat sa derivez, dar nu mi-a mers.
          Codul arata asa

          @class Footbal : public QDialog, public Login@
          Primesc eroarea:

          'QObject' is an ambiguos base of 'Footbal' - de 4 ori. Si un warning:
          Class Footbal inherits from two QObject subclasses QDialog and Login. This is not supported!

          public QDialog era pus inca din momentul in care am realizat interfata si am creat legaturile on_pushbutton_clicked.

          1 Reply Last reply
          0
          • C Offline
            C Offline
            cincirin
            wrote on 20 Jan 2014, 09:41 last edited by
            #15

            Poti sa pasezi Login object in constructor la Footbal class

            @
            class Footbal(const Login& l)
            {
            // here you can access QTcpSocket object din Login class, ceva de genul
            QTcpSocket* socket = l.socket();
            }
            @

            1 Reply Last reply
            0
            • K Offline
              K Offline
              KupiKupi
              wrote on 20 Jan 2014, 22:23 last edited by
              #16

              Am scos-o la capat cu chestia asta. Acum stiu ca mesajele ajung de la client la server si de la server la client. Problema e urmatoarea: eu vreau sa transmit date destul de multe de la server la clienti, inclusiv \n-urile. Pentru a le afisa in client folosesc QMessagebox-uri. Nu am reusit sa primesc in client decat cate un singur rand. Intrebarea mea e: nu poate Messagebox-ul sa suporte randuri multiple? Sau cum pot transmite date mari de la server la client.

              O portiune de cod in care incerc sa transmit date la client:

              @ QByteArray Data = socket->readAll(); // citirea informatiei din socket;
              qDebug() << socketDescriptor << "Data in: " << Data; // scrierea informatiei de la client
              QString Data2;
              Data2 = "\n1 Dinamo\n2 Steaua\n 3Vaslui\n";
              socket->write(Data); //test, sa vad daca merge sa scriu inapoi ce am primit
              socket->flush();
              socket->write(Data2.toUtf8());
              socket->flush();@

              Partea interesanta e ca de fiecare data cand apas butonul respectiv primesc doar pana la \n - apas odata, primesc 1 Dinamo, mai apas odata, primesc 2 Steaua etc.

              1 Reply Last reply
              0
              • C Offline
                C Offline
                cincirin
                wrote on 22 Jan 2014, 08:03 last edited by
                #17

                bq. nu poate Messagebox-ul sa suporte randuri multiple?

                QMessageBox suporta randuri multiple, dar nu aici cred ca este problema ta

                Din cate vad trimiti de 2 ori aceleasi date, odata la linia 4 si odata la linia 7
                La client ce primesti daca chemi
                @
                int receivedBytesSize = socket->readAll()->size();
                @

                Ce valoare are "receivedBytesSize" ?

                1 Reply Last reply
                0
                • K Offline
                  K Offline
                  KupiKupi
                  wrote on 22 Jan 2014, 12:59 last edited by
                  #18

                  @if(pSocket->waitForConnected())
                  {
                  int recvBS = pSocket->readAll().size();
                  qDebug () << recvBS;
                  }@
                  Ciudat.
                  Cand apas prima oara pe butonul respectiv imi scrie 0. Dar daca apas iar imi da 28. Daca mai apas in continuare, tot 28. Deci 28 cred ca e marimea. Dar nu-s lamurit ce inseamna 0 ala intai. Nu as vrea sa am pierderi de date

                  Cum pot face sa am mai mult spatiu? Vreau sa trimit chiar poate chiar si 2048 caractere

                  1 Reply Last reply
                  0
                  • C Offline
                    C Offline
                    cincirin
                    wrote on 22 Jan 2014, 13:06 last edited by
                    #19

                    bq. Cand apas prima oara pe butonul respectiv imi scrie 0. Dar daca apas iar imi da 28.

                    Poti sa scrii exact ce trimiti de la server ?
                    Iar codul de mai sus pune-l intr-un slot connectat la readyRead signal emis de "pSocket"

                    bq. Nu as vrea sa am pierderi de date

                    Nu o sa ai niciodata pierderi de date. TCP protocol tocmai asta este, garanteaza ca toate packets ajung la destinatie si in ordinea in care sunt trimise.

                    1 Reply Last reply
                    0
                    • K Offline
                      K Offline
                      KupiKupi
                      wrote on 22 Jan 2014, 13:17 last edited by
                      #20

                      @void Thread::readyRead()
                      {
                      QByteArray Data = socket->readAll(); // citirea informatiei din socket;
                      qDebug() << socketDescriptor << "Data in: " << Data; // scrierea informatiei de la client
                      QString Data2;
                      Data2 = "\n1 Dinamo\n2 Steaua\n 3Vaslui\n";
                      socket->write(Data2.toUtf8());
                      socket->flush();
                      }@

                      asta e functia din server.

                      Acum rezolv si cu readyRead-ul in client si postez imediat

                      1 Reply Last reply
                      0
                      • K Offline
                        K Offline
                        KupiKupi
                        wrote on 22 Jan 2014, 13:22 last edited by
                        #21

                        @connect (pSocket, SIGNAL(readyRead()), SLOT (handleRead()));@

                        @void MainWindow::handleRead()
                        {
                        int recvBS = pSocket->readAll().size();
                        qDebug () << recvBS;
                        }@

                        Am testat si primesc doar 28 in output.

                        1 Reply Last reply
                        0
                        • K Offline
                          K Offline
                          KupiKupi
                          wrote on 22 Jan 2014, 13:25 last edited by
                          #22

                          In server o sa vreau sa citesc din fisier si sa trimit la client, deci exemplul cu Dinamo Steaua nu e chiar relevant. Totusi, as vrea sa ma asigur ca am sanse de reusita in ceea ce fac. Citire din fisier si trimitere prin socket la client.

                          1 Reply Last reply
                          0
                          • C Offline
                            C Offline
                            cincirin
                            wrote on 23 Jan 2014, 08:05 last edited by
                            #23

                            bq. Am testat si primesc doar 28 in output.

                            ... deci functioneaza bine acuma (din cate inteleg)

                            bq. In server o sa vreau sa citesc din fisier si sa trimit la client

                            Poti sa trimiti date la client citite de oriunde, de pe hdd, din alt socket, din memorie, etc ... poti sa creezi orice pachet de date

                            1 Reply Last reply
                            0

                            20/23

                            22 Jan 2014, 13:17

                            • Login

                            • Login or register to search.
                            20 out of 23
                            • First post
                              20/23
                              Last post
                            0
                            • Categories
                            • Recent
                            • Tags
                            • Popular
                            • Users
                            • Groups
                            • Search
                            • Get Qt Extensions
                            • Unsolved