There is more than one checksum. At layer 2, the checksum is its own thing. At layer three, a partial read means the checksum isn't necessarily here yet - assuming the checksum is relevant ( UDP makes checksums optional ).
IMO, you really need to make writes to a UDP socket explicitly nonblocking and check the error codes.
IMO, you really need to make writes to a UDP socket explicitly nonblocking and check the error codes.