Both sides previous revisionPrevious revisionNext revision | Previous revisionLast revisionBoth sides next revision |
util:sexyz [2020/11/28 21:57] – Separate original and XMODEM-1K/CRC examples. Add ZMODEM-non-streaming example. digital man | util:sexyz [2020/12/05 12:34] – [Support] ZMODEM streaming modes digital man |
---|
usage: sexyz <socket> [-opts] <cmd> [file | path | @list] | usage: sexyz <socket> [-opts] <cmd> [file | path | @list] |
| |
socket = TCP socket descriptor (or leave blank for "stdio" mode on Unix) | socket = TCP socket descriptor (leave blank for stdio mode) |
| |
opts = -y allow overwriting of existing files when receiving | opts = -y allow overwriting of existing files when receiving |
-o disable ZMODEM CRC-32 mode (force CRC-16 mode instead) | |
-s disable ZMODEM streaming (Slow ZMODEM) | |
-k enable X/YMODEM-1K send mode | -k enable X/YMODEM-1K send mode |
-c enable XMODEM-CRC receive mode | -c enable XMODEM-CRC receive mode |
-g enable X/YMODEM-G receive mode (no error recovery) | -g enable X/YMODEM-G receive mode (no error recovery) |
| -o disable ZMODEM CRC-32 mode (use CRC-16) |
| -s use segmented ZMODEM (disable streaming) |
-2 set maximum ZMODEM block size to 2K | -2 set maximum ZMODEM block size to 2K |
-4 set maximum ZMODEM block size to 4K | -4 set maximum ZMODEM block size to 4K |
-8 set maximum ZMODEM block size to 8K (ZedZap) | -8 set maximum ZMODEM block size to 8K (ZedZap) |
-m# set maximum receive file size to # bytes (0=unlimited, default=0) | -w# set maximum ZMODEM transmit window size (default=0, unlimited) |
| -m# set maximum receive file size to # bytes (default=0, unlimited) |
| -l lowercase received filenames |
-! to pause after abnormal exit (error) | -! to pause after abnormal exit (error) |
-telnet to enable Telnet mode (the default) | -telnet to enable Telnet mode (the default except in stdio mode) |
-rlogin to enable RLogin (pass-through) mode | -rlogin or -ssh or -raw to disable Telnet mode |
| |
cmd = v to display detailed version information | cmd = v to display detailed version information |
<code ini> | <code ini> |
Telnet=TRUE ; set to FALSE to change the default mode | Telnet=TRUE ; set to FALSE to change the default mode |
TCP_NoDelay=TRUE ; disable the TCP Nagle algorithm | |
LogLevel=INFO ; set display/log output level | LogLevel=INFO ; set display/log output level |
| SysLog=FALSE ; log to syslog (*nix only) |
Debug=FALSE ; enable debug logging (overrides LogLevel) | Debug=FALSE ; enable debug logging (overrides LogLevel) |
DebugTx=FALSE ; debug transmitted characters | DebugTx=FALSE ; debug transmitted characters |
OutbufDrainTimeout=10 ; milliseconds before auto-flush | OutbufDrainTimeout=10 ; milliseconds before auto-flush |
ProgressInterval=1 ; interval (in seconds) of progress display | ProgressInterval=1 ; interval (in seconds) of progress display |
MaxFileSize=0 ; maximum receive file size in bytes (0=unlimited) | MaxFileSize=0 ; maximum receive file size in bytes (0=unlimited) |
| |
[XMODEM] | [XMODEM] |
MaxBlockSize=1024 ; 1024 is "true" ZMODEM, 8192 for ZMODEM-8K (ZedZap) | MaxBlockSize=1024 ; 1024 is "true" ZMODEM, 8192 for ZMODEM-8K (ZedZap) |
MaxErrors=9 ; maximum number of consecutive errors | MaxErrors=9 ; maximum number of consecutive errors |
RecvBufSize=0 ; specify non-zero for partial streaming receives | RecvBufSize=0 ; specify non-zero for segmented receives |
Streaming=TRUE ; set to FALSE to disable streaming (block-at-a-time) | Streaming=TRUE ; set to FALSE to disable streaming (segmented receives) |
CRC32=TRUE ; set to FALSE to force CRC-16 instead | CRC32=TRUE ; set to FALSE to force CRC-16 instead |
| FullDuplex=TRUE ; set to FALSE to disable window support (on receive) |
EscapeTelnetIAC=TRUE ; send ZDLE/ZRUB1 instead of 0xff with -telnet | EscapeTelnetIAC=TRUE ; send ZDLE/ZRUB1 instead of 0xff with -telnet |
Escape8thBit=FALSE ; ZDLE-escape all bytes with bit-7 set | Escape8thBit=FALSE ; ZDLE-escape all bytes with bit-7 set |
EscapeCtrlChars=FALSE ; ZDLE-escape all control characters (< 20h) | EscapeCtrlChars=FALSE ; ZDLE-escape all control characters (< 20h) |
| MaxWindowSize=0 ; Set to non-zero number of bytes to use window management |
| TargetWindowSize=0 ; Set to a duration (e.g. in seconds) to enable auto-adjusting window size |
| |
[DSZLOG] | [DSZLOG] |
Short=false ; use Micros~1 short path/filename in log (Windows) | Short=false ; use Micros~1 short path/filename in log (Windows) |
Quotes=false ; enclose filename in "quotes" (for EleBBS) | Quotes=false ; enclose filename in "quotes" (for EleBBS) |
| |
| [SOCKOPTS] |
</code> | </code> |
| |
**Note:**\\ | **Notes:**\\ |
Older versions of SEXYZ did not support comments on some of the ''sexy.ini'' lines shown above. | * The defaults and ''sexyz.ini'' specified values can be over-ridden via command-line options. |
| * Older versions of SEXYZ did not support comments on some of the ''sexy.ini'' lines shown above. |
| * See ''[[dir:ctrl]]/[[config:sockopts.ini]]'' for the Socket Options that can be set in the ''[SOCKOPTS]'' section. |
| * Versions of SEXYZ prior to 3.0 recognized a global ''TCP_NODELAY'' key. Now that key, if it is to be set, must be in the optional ''[SOCKOPTS]'' section (for advanced uses only). |
| |
===== Compatibility ===== | ===== Compatibility ===== |
* Failed: none | * Failed: none |
| |
| |
| ===== ZMODEM Streaming ===== |
| The ZMODEM protocol supports multiple methods of data streaming and error recovery. SEXYZ supports the following ZMODEM streaming modes, in order of decreasing successful data transfer assurance: |
| |
| * **Segmented**: a "block at a time" mode, each data subpacket acknowledged by the receiver (whom can request this mode). Can be enabled when sending via the ''-s'' option or by setting ''Streaming=false'' in ''sexyz.ini''. |
| * **Window Management**: limiting the amount of data "in-flight" between the sender and receiver using asynchronous status reporting by the receiver. Can be controlled when sending via the ''-w'' option or by setting ''MaxWindowSize'' (and optionally ''TargetWindowSize'') in ''sexyz.ini''. |
| * **Full Streaming**: the default, subject to large send-buffering on the sending side potentially resulting in failed error-recovery or completion-acknowledgment timeouts. |
| |
| //Window Management// mode was added in SEXYZ v3.0 to support very asymmetric send-operations where the sender is a modern system, potentially with multiple-megabyte send-buffers, sending to a receiver that can only consume data at a rate of 115200bps (about 10KBytes/second) or less. |
| |
===== Support ===== | ===== Support ===== |
* The 16-bit CRC table and calculation macro was (unwittingly) contributed by Mark G. Mendel and Stephen Satchell. | * The 16-bit CRC table and calculation macro was (unwittingly) contributed by Mark G. Mendel and Stephen Satchell. |
* The 32-bit CRC table and calculation macro was (unwittingly) contributed by Gary S. Brown. | * The 32-bit CRC table and calculation macro was (unwittingly) contributed by Gary S. Brown. |
* SEXYZ includes portions of the Synchronet XPDEV and SMBLIB libraries which are licensed under the GNU Lesser General Public License ([[http://www.fsf.org/licensing/licenses/lgpl.txt|LGPL]]). | * SEXYZ includes portions of the Synchronet project (e.g. XPDEV) which are licensed under the GNU Lesser General Public License ([[http://www.fsf.org/licensing/licenses/lgpl.txt|LGPL]]). |
| |
===== See Also ===== | ===== See Also ===== |