Socat

netcat(nc)的替代产品
授权协议 GPL
开发语言 C/C++
所属分类 管理和监控、 DevOps/运维工具
软件类型 开源软件
地区 不详
投 递 者 吕灿
操作系统 Linux
开源组织
适用人群 未知
 软件概览

socat是一個netcat(nc)的替代產品,可以稱得上nc++。socat的特點就是在兩個流之間建立一個雙向的 通道。socat的地址類型很 多,有ip, tcp, udp, ipv6, pipe,exec,system,open,proxy,openssl,等等。看一個例子:

c:\>socat - tcp:192.168.1.18:80

這個命令等同於 nc 192.168.1.18 80。 socat裡面,必須有兩個流,所以第一個參數-代表標準的輸入輸出,第二個流連接到192.168.1.18的80端口。再看一個反向telnet的例子:

on server:
c:\>socat tcp-listen:23 exec:cmd,pty,stderr

這個命名把cmd綁定到端口23,同時把cmd的Stderr重定向到stdout。

on client:
c:\>socat readline tcp:server:23

連接到服務器的23端口,即可獲得一個cmd shell。readline是gnu的命令行編輯器,具有歷史功能。

再看文件傳遞的例子。nc也經常用來傳遞文件,但是nc有一個缺點,就是不知道文件什麼時候傳完了,一般要用Ctrl+c來終止,或者估計一個時間,用-w參數來讓他自動終止。用socat就不用這麼麻煩了:

on host 1:
c:\>socat -u open:myfile.exe,binary tcp-listen:999

on host 2:
c:\>socat -u tcp:host1:999 open:myfile.exe,create,binary

這個命令把文件myfile.exe用二進制的方式,從host 1 傳到host 2。-u 表示數據單向流動,從第一個參數到第二個參數,-U表示從第二個到第一個。文件傳完了,自動退出。

再來一個大家喜歡用的例子。在一個NAT環境,如何從外部連接到內部的一個端口呢?只要能夠在內部運行socat就可以了。

外部:
c:\>socat tcp-listen:1234 tcp-listen:3389

內部:
c:\>socat tcp:outerhost:1234 tcp:192.168.12.34:3389

這樣,你外部機器上的3389就影射在內部網192.168.12.34的3389端口上。

socat還具有一個獨特的讀寫分流功能,比如:

c:\>socat open:read.txt!!open:write.txt,create,append tcp-listen:80,reuseaddr,fork

這個命令實現一個假的web server,客戶端連過來之後,就把read.txt裡面的內容發過去,同時把客戶的數據保存到write.txt裡面。”!!”符號用戶合併讀寫流,前面的用於讀,後面的用於寫。

  • 这篇文章继续介绍一下socat常见的5种使用方法。 使用方法1:当作cat来使用 liumiaocn:~ liumiao$ socat - `pwd`/greetings hello liumiao liumiaocn:~ liumiao$ 但是需要注意的是相对路径或者绝对路径写完整,毕竟还是socket方式的实现,直接使用文件名可能会出现下面类似的错误。 liumiaocn:~ liumia

  • 概述 socat,是linux下的一个工具,其功能与有“瑞士军刀”之称的netcat类似,不过据说可以看做netcat的加强版。的确如此,它有一些netcat所不具备却又很有需求的功能,例如ssl连接这种。nc可能是因为比较久没有维护,确实显得有些陈旧了。 安装 Ubuntu上可以直接sudo apt-get install socat,其他发行版没试过。 也可以去官网下载源码包socat lin

  • 概述 socat,是linux下的一个工具,其功能与有“瑞士军刀”之称的netcat类似,不过据说可以看做netcat的加强版。的确如此,它有一些netcat所不具备却又很有需求的功能,例如ssl连接这种。nc可能是因为比较久没有维护,确实显得有些陈旧了。 安装 Ubuntu上可以直接sudo apt-get install socat 基本语法 1 socat [options] <addres

  • socat udp 转tcp socat

  • socat,一个多功能的网络工具,名字来源于SOcket CAT,是netcat的增强版,也就是netcat++(扩展了设计,并有新的实现)。 # debian/ubuntu apt-get install socat # centos/redhat yum install -y socat 1.socat简介   socat是一个多功能的网络工具,名字来由是” Socket CAT”,可以看作

  • 最近在测试的时候需要向转发机发送tcp报文,于是整理了socat的常用命令。 什么是socat socat是一个用于数据转发的命令行工具,它可以在两个端口之间建立虚拟通道,将数据从一个端口转发到另一个端口,同时支持很多网络协议。 socat支持的常用网络协议 TCP、UDP:传输层协议,用于网络通信。 SSL、TLS:安全传输协议,用于加密数据传输。 HTTP、HTTPS:应用层协议,用于 Web

  • 目录 介绍 安装 下载软件包  编译安装  使用 工作机理  地址类型 

  • #! /bin/bash PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin export PATH # ==================================================== #    System Request:CentOS 6+ 、Debian 7+、Ubuntu

  • 原文地址::https://blog.csdn.net/koozxcv/article/details/50520057 相关文章 1、Install socat on Mac OSX----https://blog.csdn.net/mike__lee/article/details/72809123 2、Compiling SOCAT on Redhat----https://stackove

  • 端口转发映射的程序叫rinetd,下载地址,直接manke编译安装即可。[root@PortForward02 src]# wget http://www.boutell.com/rinetd/http/rinetd.tar.gz [root@PortForward02 src]# ls rinetd.tar.gz [root@PortForward02 src]# tar -zxvf rinet

 相关资料
  • spring-nc=spring no controller,一个不需要controller类的spring扩展,只需在对应的service接口上应用controller相关注解,便能提供如同controller一样直接访问对应接口实现类的service方法。 此扩展还同时兼容原有的controller写法,使用简单对service无侵入。  使用步骤如下: 1.先定义service接口类: pa

  • nc-cms 是一个简单、快速、易用的内容管理系统,采用PHP开发。

  • 问题内容: 我正在尝试设置grunt.js文件,以便它仅在生产服务器上运行时才运行任务- 在本地开发服务器上运行时,我不需要每次更改都不需要我的代码,因为这是不必要的。 关于grunt.js如何区分开发/生产环境的任何想法? 问题答案: 注册生产任务: 在开发服务器上运行,在生产上运行。 您还可以为每个任务设置更精细的目标:

  • 问题内容: 问题 在解决这个问题之后,似乎基于文件或磁盘的实现可能是解决我在此处提到的问题的正确解决方案。精简版: 目前,我已将实施为。 条目以相当固定的速率连续添加到其中。稍后对此进行详细说明。 最终,无论如何,这意味着JVM耗尽了堆空间。 在工作中,(强烈)建议我使用SQLite解决此问题,但是在问了上一个问题之后,我认为数据库不是适合此工作的合适工具。所以- 让我知道这听起来是否疯狂 -我认

  • 问题内容: 这是一个从来没有一个正确答案的问题,我已经在网上搜索了很多次,却找不到解决方案。 它适用于Firefox,Chrome。我的responseText将像Réunion这样返回char,它将显示为奇怪的符号。 我尝试了许多方法,例如编码和解码,在响应文件中设置标头都无效。我没主意了。请帮助某人。 在主文件中,确保设置了内容类型和字符集。 在您的AJAX加载页面中,确保您位于顶部。 问题解

  • 问题内容: 一个(很久以前),我写了一个网络蜘蛛,我对该线程进行了多线程处理,以使并发请求能够同时发生。那是我的Python青年时代,在我了解GIL及其为多线程代码造成的相关麻烦之前(IE,大多数时候,这些东西最终都被序列化了!)… 我想对这段代码进行重做,以使其更健壮并性能更好。基本上有两种方法可以执行此操作:我可以使用2.6+中的新多处理模块,也可以使用某种基于反应堆/事件的模型。我宁愿以后再

  • 问题内容: 我执行了一个程序包管理器命令,将我们的项目更新为最新的二进制文件。我几乎发布了它,因为它通过了所有测试,直到幸运的是,我发现了一个需要更多调试的问题。 当我突然看到以下异常消息时,我的嘴张开了: 已达到“每小时6000个Redis请求”的免费配额限制。请访问https://servicestack.net升级到商业许可证。 如果我发布了该网站怎么办?这些做法简直令人反感!没有控制台警告

  • 问题内容: 我要求对当前使用JFileChooser的小程序进行一些更改。 主要的抱怨之一是文件选择器的使用很麻烦,因为它的行为与本机窗口小部件不同,特别是在向上导航到根级别时。 因此,知道JFileChooser以及所有其他问题(例如Windows上的zip文件缓存…)遭受苦难后,我想知道Java世界中是否存在可行的替代方案。 当然,有SWT使用本机窗口小部件,但是将applet大小增加25并不