1
0
Fork 0
mirror of https://repo.or.cz/socat.git synced 2025-06-19 07:16:52 +00:00

Improved README; explained benefit of UDP-DATAGRAM

This commit is contained in:
Gerhard 2025-02-13 14:40:24 +01:00
parent 52e2e5a277
commit 186a323c2d
3 changed files with 24 additions and 8 deletions

View file

@ -158,6 +158,10 @@ Documentation:
Corrected lots of misspelling and typos. Corrected lots of misspelling and typos.
Thanks to Mario de Weerd for reporting these issues. Thanks to Mario de Weerd for reporting these issues.
Improved README file.
Better explained benefit of UDP-DATAGRAM address type.
####################### V 1.8.0.2: ####################### V 1.8.0.2:
Security: Security:

13
README
View file

@ -58,8 +58,15 @@ Rocky 9
Cygwin 10.0 Cygwin 10.0
install build
------- -----
You need at least gcc and make.
A few libraries are required for full features:
Debian: libssl-dev libreadline-dev libwrap0-dev
Red Hat: openssl-devel readline-devel tcp_wrappers-libs
Arch Linux: openssl readline
Get the tarball and extract it: Get the tarball and extract it:
tar xzf socat.tar.gz tar xzf socat.tar.gz
@ -69,7 +76,7 @@ Get the tarball and extract it:
su su
make install # installs socat, filan, and procan in /usr/local/bin make install # installs socat, filan, and procan in /usr/local/bin
For compiling socat, gcc (or clang) is recommended. For compiling socat, gcc or a compatible compiler (e.g. clang) is recommended.
If gcc (or a compiler with similar front end) is not available, the configure If gcc (or a compiler with similar front end) is not available, the configure
script might fail to determine some features script might fail to determine some features

View file

@ -1429,7 +1429,8 @@ label(ADDRESS_UDP_SENDTO)dit(bf(tt(UDP-SENDTO:<host>:<port>)))
link(pf)(OPTION_PROTOCOL_FAMILY). It sends packets to and receives packets link(pf)(OPTION_PROTOCOL_FAMILY). It sends packets to and receives packets
from that peer socket only. from that peer socket only.
This address effectively implements a datagram client. This address effectively implements a datagram client.
It works well with socat UDP-RECVFROM and UDP-RECV address peers.nl() It works well with socat UDP-RECVFROM and UDP-RECV address peers.
When the peer might send data first, link(UDP-DATAGRAM)(ADDRESS_UDP_DATAGRAM) is preferable.nl()
Option groups: link(FD)(GROUP_FD),link(SOCKET)(GROUP_SOCKET),link(IP4)(GROUP_IP4),link(IP6)(GROUP_IP6) nl() Option groups: link(FD)(GROUP_FD),link(SOCKET)(GROUP_SOCKET),link(IP4)(GROUP_IP4),link(IP6)(GROUP_IP6) nl()
Useful options: Useful options:
link(ttl)(OPTION_TTL), link(ttl)(OPTION_TTL),
@ -1467,7 +1468,8 @@ label(ADDRESS_UDP_RECVFROM)dit(bf(tt(UDP-RECVFROM:<port>)))
label(NOTE_RECVFROM)Note: When the second address fails before entering the transfer loop the label(NOTE_RECVFROM)Note: When the second address fails before entering the transfer loop the
packet is dropped. Use option link(retry)(OPTION_RETRY) or packet is dropped. Use option link(retry)(OPTION_RETRY) or
link(forever)(OPTION_FOREVER) on the second address to avoid data loss. link(forever)(OPTION_FOREVER) on the second address to avoid data loss.
nl() When you know the peer address, link(UDP-DATAGRAM)(ADDRESS_UDP_DATAGRAM) is
preferable.nl()
Option groups: link(FD)(GROUP_FD),link(SOCKET)(GROUP_SOCKET),link(IP4)(GROUP_IP4),link(IP6)(GROUP_IP6),link(CHILD)(GROUP_CHILD),link(RANGE)(GROUP_RANGE) nl() Option groups: link(FD)(GROUP_FD),link(SOCKET)(GROUP_SOCKET),link(IP4)(GROUP_IP4),link(IP6)(GROUP_IP6),link(CHILD)(GROUP_CHILD),link(RANGE)(GROUP_RANGE) nl()
Useful options: Useful options:
link(fork)(OPTION_FORK), link(fork)(OPTION_FORK),
@ -2996,6 +2998,8 @@ label(OPTION_NOFORK)dit(bf(tt(nofork)))
it() the first socat address cannot be OPENSSL or READLINE it() the first socat address cannot be OPENSSL or READLINE
it() socat options -b, -t, -D, -l, -v, -x become useless it() socat options -b, -t, -D, -l, -v, -x become useless
it() for both addresses, options ignoreeof, cr, and crnl become useless it() for both addresses, options ignoreeof, cr, and crnl become useless
it() for both addresses, address specific end/shutdown handling (e.g.,
graceful socket shutdown) and related options become useless
it() for the second address (the one with option nofork), options it() for the second address (the one with option nofork), options
append, metaCOMMENT(async,) cloexec, flock, user, group, mode, nonblock, append, metaCOMMENT(async,) cloexec, flock, user, group, mode, nonblock,
perm-late, setlk, and setpgid cannot be applied. Some of these could be perm-late, setlk, and setpgid cannot be applied. Some of these could be
@ -3543,7 +3547,8 @@ label(TYPE_COMMAND_LINE)dit(command-line)
A string specifying a program name and its arguments, separated by single A string specifying a program name and its arguments, separated by single
spaces. spaces.
label(TYPE_DATA)dit(data) label(TYPE_DATA)dit(data)
This is a more general data specification. The given text string contains This is a more general data specification, "dalan" (low level data
description language). The given text string contains
information about the target data type and value. Generally a leading information about the target data type and value. Generally a leading
character specifies the type of the following data item. In its specific character specifies the type of the following data item. In its specific
context a default data type may exist.nl() context a default data type may exist.nl()
@ -3559,12 +3564,12 @@ label(TYPE_DATA)dit(data)
dit(b) A signed byte (signed char).nl() dit(b) A signed byte (signed char).nl()
dit(B) An unsigned byte (unsigned char).nl() dit(B) An unsigned byte (unsigned char).nl()
dit(x) Following is an even number of hex digits, stored as sequence of dit(x) Following is an even number of hex digits, stored as sequence of
bytes.nl() bytes, the data length is the resulting number of bytes.nl()
Example: bf(x7f000001) (IP address 127.0.0.1) Example: bf(x7f000001) (IP address 127.0.0.1)
dit(") Following is a string that is used with the common conversions dit(") Following is a string that is used with the common conversions
\n \r \t \f \b \a \e \0; the string must be closed with '"'. Please note \n \r \t \f \b \a \e \0; the string must be closed with '"'. Please note
that the quotes and backslashes need to be escaped from shell and socat() that the quotes and backslashes need to be escaped from shell and socat()
conversion.nl() conversion. No implicit \0 is appended.nl()
Example: bf("Hello world!\n") Example: bf("Hello world!\n")
dit(') A single char, with the usual conversions. Please note that the dit(') A single char, with the usual conversions. Please note that the
quotes and backslashes need to be escaped from shell and socat() conversion. quotes and backslashes need to be escaped from shell and socat() conversion.