c++ - UDP Socket reading last incoming byte -
i have socket sending massiv among of byte, repeating same information, receiver couldn't bytes in time. had way slow down sender side have latencies, due not enough bytes coming. need real time transfer.
is there way receiver read last incoming byte , discard other ones pursue in program?
while (sock->isconnect() && tcpsock->isconnect()) { // while instead of if, stuck in loop if (sock->recdata(buff, 14)) { //receiving 14 bytes udp sendangles2(buff); logger->setlatenz(logger->recv); } logger->setlatenz(logger->main); logger->logdata(); // rest of code }
unfortuntely, there's no standard/normal way of doing 1 -- when new packet received udp socket has full receive buffer, new packet dropped, when preferrable drop older (buffered) packets.
one thing can use setsockopt(fd, sol_socket, so_recvbuf,... crank down size of socket receive buffer. doing cause start dropping packets sooner when receiver falls behind, paradoxically reducing latency in processing packets, similar bufferbloat mitigation techniques.
1there's no way on linux or bsd of i'm aware; real-time oses may have way of doing it
Comments
Post a Comment