initial checkin
Initial import
Updated for JDK 1.4. Note that JDK 1.3 and JDK 1.4 are incompatible
because of the introduction of the java.net.SocketAddress class.
Pathnames in the backup target have been corrected.
The backup file is now created so that it unzips into a tree with the
jswrench directory at the head.
JDK1.4 demands that an Inet4Address object rather than an InetAddress object
is created if the InetAddress.toString() method is to work correctly.
No attempt is now made to resolve the hostname associated with the IP address
in order to prevent recursive UDP calls.
Numbers greater than 127 now printed correctly by IP4Message.toString().
The standard Berkeley UDP socket is now created by the new factory
UDPSocketImplFactory. UDPDatagramSocketImpl creates a raw socket that
supports UDP.
All data members now public.
DNSMessage.dump() introduced.
DNS Messages are detected and written out in full.
Bug fix to ensure that Traceroute terminates correctly.
Any attempt to create a socket that allows user-defined headers on Windows
is now signalled as an error.
IP_HDRINCL is now implemented in Windows but the runtime behaviour
differs significantly from Linux. More debug has been added to bind().
The DatagramEcho app has been rejigged so that it resembles the standard
Echo app more closely.
javadoc comments updated
Added comment to code to clarify that it's correct to use UDP
with XP and RawUDP with Linux.

Fixed bug in RawUDP where IP header length had been ignored.
Introduced the -x option that allows messages from a single source address
to be excluded.
Sorted out support for RawUDP protocol. There are still problems, as the app
runs very slowly and occasionally corrupts the returned packets.