networking · beginner · ~15 min

Datagrams needed

Split a payload into MTU-sized datagrams.

Challenge

UDP does not segment data, so an application must split a payload into MTU-sized datagrams itself. Compute how many datagrams a payload needs.

Task

Implement int datagrams_needed(int total_bytes, int mtu) that returns the number of datagrams of at most mtu bytes needed to carry total_bytes (a ceiling division). Return 0 if mtu <= 0.

Input

  • total_bytes: the payload size in bytes.
  • mtu: the maximum bytes per datagram.

Output

Returns ceil(total_bytes / mtu), or 0 when mtu <= 0.

Example

datagrams_needed(3000, 1500)   ->   2
datagrams_needed(1600, 1500)   ->   2
datagrams_needed(100, 1500)    ->   1
datagrams_needed(100, 0)       ->   0

Edge cases

  • mtu <= 0: return 0 (avoid dividing by zero).
  • A payload that exactly fills a whole number of datagrams uses exactly that many.

Input format

Two integers: total_bytes and mtu.

Output format

ceil(total_bytes / mtu), or 0 if mtu <= 0.

Constraints

Use ceiling division; guard mtu <= 0 by returning 0.

Starter code

int datagrams_needed(int total_bytes, int mtu) {
    /* TODO */
    return 0;
}

Solve this exercise in the browser editor — compile and run against the test harness, no setup required.