转
原文链接: http://www.wenquan.name/?p=1158
说起来有点土,事到如今才第一次用socat. 不过今天看了一眼,netcat(nc)这东西ms已经N年没有人维护了.最先有个叫nc110的东西,由于太普及, 以至于人们都不想再去改动它的功能.结果导致多年来没有任何进步…现任的RHEL5里面好像也是由nc110改出来的.另外分支出来一个netcat,这个在google上直接netcat最容易出来,但也好多年没有人动过了…由于这些情况,才使得socat应运而生.虽然它已经生了好多年了,不过我才认识… 用socat试几个netcat常用的用法,对比如下: 1. 听tcp 12345端口 # nc -l 127.0.0.1 12345 # socat tcp-listen:12345 - 2. 向远处tcp 12345端口发点字 # echo “test” | nc 127.0.0.1 12345 # echo “test” | socat - tcp-connect:127.0.0.1:12345 3. 听udp 23456端口 # nc -u -l 127.0.0.1 23456 # socat udp-listen:23456 - 4. 向远处udp 23456端口发点字 # echo “test” | nc -u 127.0.0.1 23456 # echo “test” | socat - udp-connect:127.0.0.1:23456 5. 听unix socket /tmp/unix.socket # nc -U -l /tmp/unix.socket netcat没有-U选项 # socat unix-listen:/tmp/unix.socket - 6. 向本地unix socket /tmp/unix.socket发点字 # echo “test” | nc -U /tmp/unix.socket netcat没有-U选项 # echo “test” | socat - unix-connect:/tmp/unix.sock 7. 听本地unix datagram socket /tmp/unix.dg.sock nc110搞不定,netcat也搞不定 # socat unix-recvfrom:/tmp/unix.dg.sock - 8. 向本地unix datagram socket /dev/log发点字 nc110搞不定,netcat也搞不定 # echo “test” | socat - unix-sendto:/tmp/unix.dg.sock