IPXCOPY Version 2.7
Jan 1997
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 300 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. 64 data-packets (64000 Bytes)
are send in parallel. The receiver is always ready to get more than
64 data-packets. Serialization and transmission of these 64
data-packets is done by the ipx-api at fastest possible spead.
Using more than 64 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.
Bugs
IPXCOPY fails for directories with a large number of entries (about
1500 and more).
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 "*.*"
2.5 Nov 26 1996 (beta version)
improved speed by 25%, fixed rare problem with sync on EOF,
long file name support
2.6 Jan 08 1996
lfn is disabled by default, error check for overflow of dir-entries,
fixed problem with pathnames, added 'nobreak' switch
2.7 Jan 14 1996
added 'kill' switch
Oliver Kraus
kraus@lrs.e-technik.uni-erlangen.de