Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. How i can determine size of buffer.data() in udp socket in Qt?

How i can determine size of buffer.data() in udp socket in Qt?

Scheduled Pinned Locked Moved Solved General and Desktop
2 Posts 2 Posters 1.7k 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.
  • stackprogramerS Offline
    stackprogramerS Offline
    stackprogramer
    wrote on last edited by stackprogramer
    #1

    hi,
    when i use resize buffer udp to 1MB, and received Data is less than 1MB, how i can determine size of buffer.data() in udp socket???

     void MyUDP::readyRead()     //Read something
    {
      QByteArray Buffer;
      Buffer.resize(1000000);
      
      QHostAddress sender;
      quint16 senderPort;
      socket->readDatagram(Buffer.data(),Buffer.size(),&sender,&senderPort);
      
      //The address will be sender.toString()
    }
    

    i can not find any method that work for data size not buffer size

    even i test

    void MyUDP::readyRead()     //Read something
    {
      QByteArray Buffer;
      Buffer.resize(socket->pendingDatagramSize());
      
      QHostAddress sender;
      quint16 senderPort;
      socket->readDatagram(Buffer.data(),Buffer.size(),&sender,&senderPort);
      
      //The address will be sender.toString()
    }
    

    **in ubuntu when i send data 1MB, it can not received all data,
    some of data will be lost. it received 50k data.
    my sender 1MB is python socket , when i send 1MB to udp c++ Qt, when i used socket-
    i can not received all data some of data is lost. because python send file 1MB in 10 step.
    we can not increase size MTU that is 65535 for udp in linux,so python can not send all data in onestep.........

    >pendingDatagramSize()socket->pendingDatagramSize()
    

    so i used up method all data i can received but i can not determine size of buffer.data()**
    thanks for replies
    best regards stackprogramer

    jsulmJ 1 Reply Last reply
    0
    • stackprogramerS stackprogramer

      hi,
      when i use resize buffer udp to 1MB, and received Data is less than 1MB, how i can determine size of buffer.data() in udp socket???

       void MyUDP::readyRead()     //Read something
      {
        QByteArray Buffer;
        Buffer.resize(1000000);
        
        QHostAddress sender;
        quint16 senderPort;
        socket->readDatagram(Buffer.data(),Buffer.size(),&sender,&senderPort);
        
        //The address will be sender.toString()
      }
      

      i can not find any method that work for data size not buffer size

      even i test

      void MyUDP::readyRead()     //Read something
      {
        QByteArray Buffer;
        Buffer.resize(socket->pendingDatagramSize());
        
        QHostAddress sender;
        quint16 senderPort;
        socket->readDatagram(Buffer.data(),Buffer.size(),&sender,&senderPort);
        
        //The address will be sender.toString()
      }
      

      **in ubuntu when i send data 1MB, it can not received all data,
      some of data will be lost. it received 50k data.
      my sender 1MB is python socket , when i send 1MB to udp c++ Qt, when i used socket-
      i can not received all data some of data is lost. because python send file 1MB in 10 step.
      we can not increase size MTU that is 65535 for udp in linux,so python can not send all data in onestep.........

      >pendingDatagramSize()socket->pendingDatagramSize()
      

      so i used up method all data i can received but i can not determine size of buffer.data()**
      thanks for replies
      best regards stackprogramer

      jsulmJ Online
      jsulmJ Online
      jsulm
      Lifetime Qt Champion
      wrote on last edited by
      #2

      @stackprogramer First thing to do: read documentation (http://doc.qt.io/qt-5/qudpsocket.html#readDatagram)
      readDatagram() returns the size of the datagram:
      "Returns the size of the datagram on success; otherwise returns -1."

      https://forum.qt.io/topic/113070/qt-code-of-conduct

      1 Reply Last reply
      3

      • Login

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