|The stupid question is the question not asked
The value of $datasize is deliberately larger than SIZE. This is because the mtu on ethernet (max transmission unit) is 1496 bytes. By setting the packet size larger, you are forcing fragmentation which means you're more likely to get a correct response (since at half duplex the frags tend to collides and thus don't reach the remote host).
I'd check it against a host you've deliberately set to half duplex, just to make sure it works if you've changed that behaviour.
Glad it proved useful though.