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