IPXCOPY Version 2.4
Sep 19 1996

Written by Oliver Kraus
E-Mail: kraus@lrs.e-technik.uni-erlangen.de

IPXCOPY is a simple DOS program for copying data between two
different workstations (PCs), connected via a local area network.

Features
- freeware, but you are asked to mail me your experience with IPXCOPY
- fast transfer algorithem (I have measured up to 250 KBytes per second)
- CRC-32/CRC-16 (can be disabled)
- handles subdirecories
- overwrite checks on both workstations


NO WARRANTY

BECAUSE IPXCOPY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR
IPXCOPY. THE ENTIRE RISK IS WITH YOU. SHOULD IPXCOPY PROVE DEFECTIVE,
YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.


Using IPXCOPY

ipx api (like IPX.COM) must be present for IPXCOPY. If IPXCOPY
cannot find the ipx api, IPXCOPY will terminate with an error message.

IPXCOPY has an integrated transmitter and receiver. If there is
no filemask found on the commandline, the receiver gets activated.
So, if you simply type
   IPXCOPY
your workstation is ready to receive incoming files. Calling IPXCOPY
with a filemask as argument will invoke the transmitter. To copy all
files of the current directory, just type
   IPXCOPY *.*
To include subdirectories, use
   IPXCOPY -s *.*
These files are received by a workstation on which IPXCOPY has been
called without a filemask. If there are more receiving workstations,
the result is undefined, unless different socket numbers are used
(You can assign different socket numbers with '-sn xxx').


Win95

With Microsoft IPX/SPX Protocol, use Ethernet 802.3 Frames.
The number of sockets should be about 10 or more.


TCP/IP

IPXCOPY has been successfully tested with tcp/ip-ipx converter
programs.

Performance

The datarate is limited by several factors. Most important are:
   - physical transfer rate of the LAN (of course)
   - time used for reading and writing data (Disk-I/O)
   - time spend on calculating the checksum (crc-32/crc-16)

The transfer rate is nearly reached. 160 data-packets (64000 Bytes)
are send in parallel. The receiver is always ready to get more than
160 data-packets. Serialization and transmission of these 160
data-packets is done by the ipx-api at fastest possible spead.
Using more than 160 packets would probably speed up transmission a little
bit, but IPXCOPY is a 16 Bit program and the handling of more than 64000
bytes gets difficult.

I/O transfers and crc-32 are tried to be done during transmission and
receiving of data-packages. I/O transfers could only made faster for
larger memory blocks. Again 64000 is at the limit for this memory model.
Another idea are large hard-disk caches. But this should be better
done by an external tool.

On slow computers, crc-32 seems to eat up most of the transfer-time (more
than 50%). But I also see no way to improve this part of the program, as
long as 16 bit arithmetic is used. To get faster transmission, the
calculation the crc-32 can be disabled (switch -nocrc). Under normal
circumstancs, data integrity is already guaranteed without crc:

Step 1:
Every packet has its own crc, which is calculated by the LAN adapter.
The only problem is, the LAN can not guarantiee the arrival of a packet.

Step 2:
The transferprotocol, used by IPXCOPY, ensures that lost data packets
are retransmitted until all packets are present.

From this point of view, the calculation of the crc-32 is not really
necessary. Indeed, I never encountered missed or corrupted data during
the development of IPXCOPY. Since V2.1 crc-16 has been added, which is 
now default. Calculation of crc-16 is about three times faster than
crc-32. 

History
1.x  beta versions
2.0  May 28 1996
     first public release
2.1  Jun 13 1996
     keep filedate, crc-16, fixed bug with error handler on some cards
2.2  Sep 5 1996
     fixed write error of files with zero-size, added transmission summary
2.3  Sep 16 1996
     summary calculation, rewrote subdir change and creation functions
2.4  Sep 19 1996
     added real transmission time, check for "*.*"

Oliver Kraus
kraus@lrs.e-technik.uni-erlangen.de