socat介绍「建议收藏」

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

大家好,又见面了,我是你们的朋友全栈君。

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裡面。”!!”符號用戶合併讀寫流,前面的用於讀,後面的用於寫。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/126235.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Mongo分库方案选型

    Mongo分库方案选型 Mongo分库方案两种形式分析: 1. mongo sharding方式:1.1. 深翻页的问题举例:当mongo的分片是5片时,分页查询(如果按照创建时间倒叙查询)第一页,每页50条数据,则mongo sharding在每个分片上取50条数据,一共50*5条数据,然后进行汇总,计算出前50条正确数据作为返回结果。如果是翻页到1000页,那么mongo sharding需要从…

    2022年6月24日
    30
  • C#网络编程(Socket编程)「建议收藏」

    C#网络编程(Socket编程)「建议收藏」一、Socket网络编程1.Socket是什么?在计算机通信领域,Socket被译为“套接字”。它是计算机之间进行通信的一种约定或一种方式。通过Socket这种约定可以接收到其他计算机的数据,也可以向其他计算机发送数据。2.本质是编程接口(API),对于TCP/IP的封装,TCP/IP也提供了可供程序员做网络开发所用的接口3.作用Socket的英文原意是“插座”,的意思,通常在计算机编…

    2022年7月13日
    15
  • decimal 整数 mysql_MySQL decimal类型

    decimal 整数 mysql_MySQL decimal类型在本教程中,我们将向您介绍MySQLDECIMAL数据类型以及如何在数据库表中有效地使用它。MySQLDECIMAL数据类型简介MySQLDECIMAL数据类型用于在数据库中存储精确的数值。我们经常将DECIMAL数据类型用于保留准确精确度的列,例如会计系统中的货币数据。要定义数据类型为DECIMAL的列,请使用以下语法:column_nameDECIMAL(P,D);在上面的语法中:P…

    2022年7月17日
    21
  • java 开源 视频会议_Openmeetings 开源视频会议系统介绍与部署

    java 开源 视频会议_Openmeetings 开源视频会议系统介绍与部署Openmeetings当前作为Apache下的一个项目,基于JAVA开发,主要用于提供视频会议、即时通讯、白板、协作文档等群件工具,通过使用Red5流媒体服务器处理媒体流。Openmeetings的主要功能和特性:音频、视频会议会议前可选择音频、视频、音频+视频、图像四种模式。如图示:2.会议记录和屏幕共享3.文件管理,可以自己创建目录结构4.主持人权限控制,可以控制用户”成为主持人”…

    2022年7月12日
    25
  • 通过Jedis操作Redis[通俗易懂]

    通过Jedis操作Redis[通俗易懂]jedis是redis的java版本的客户端实现,Jedis提供了完整Redis命令。

    2025年10月9日
    3
  • vb教程编程实例详解pdf_vb程序设计教程答案刘炳文

    vb教程编程实例详解pdf_vb程序设计教程答案刘炳文实验8-1编写如图2.8.1所示的应用程度。若单击“建立文件”按钮,则分别用Print#和和Write#语句将三个同学的学号、姓名和成绩写入Score.dat和Score1.dat;若单击“读取文件”按钮,则用lineInput语句按行将两个(当前目录)文件中的数据显示在相应的文本框。其中:学号和姓名是字符串类型,成绩是整型。解题,画2个按钮,2个文本框(2个文本框的MultiLin…

    2022年10月6日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号