How come only the first part of my datagram is getting through?

  This has to do with the maximum size of a datagram on the two machines
  involved.  This depends on the sytems involved, and the MTU (Maximum
  Transmission Unit).  According to "UNIX Network Programming", all
  TCP/IP implementations must support a minimum IP datagram size of 576
  bytes, regardless of the MTU.  Assuming a 20 byte IP header and 8 byte
  UDP header, this leaves 548 bytes as a safe maximum size for UDP
  messages.  The maximum size is 65516 bytes.  Some platforms support IP
  fragmentation which will allow datagrams to be broken up (because of
  MTU values) and then re-assembled on the other end, but not all
  implementations support this.

  This information is taken from my reading of "UNIX Netowrk
  Programming" (see ``1.5 Where can I get source code for the book [book

  Andrew has pointed out the following regarding large UDP messages:

  Another issue is fragmentation. If a datagram is sent which is too
  large for the network interface it is sent through, then the sending
  host will fragment it into smaller packets which are reassembled by
  the receiving host. Also, if there are intervening routers, then they
  may also need to fragment the packet(s), which greatly increases the
  chances of losing one or more fragments (which causes the entire
  datagram to be dropped).  Thus, large UDP datagrams should be avoided
  for applications that are likely to operate over routed nets or the
  Internet proper.
Suggest a Site