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?
Forum Update on Monday, May 27th 2025

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.
  • S Offline
    S Offline
    stackprogramer
    wrote on 1 Feb 2017, 08:36 last edited by stackprogramer 2 Jan 2017, 08:43
    #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

    J 1 Reply Last reply 1 Feb 2017, 08:44
    0
    • S stackprogramer
      1 Feb 2017, 08:36

      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

      J Online
      J Online
      jsulm
      Lifetime Qt Champion
      wrote on 1 Feb 2017, 08:44 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

      2/2

      1 Feb 2017, 08:44

      • Login

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