- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在非常努力地开发一个涉及 SCTP 协议(protocol)的业余爱好程序,为了掌握基础知识,我尝试安装 socat使用homebrew ,socat是一个类似netcat的工具,用于测试各种协议(protocol)。但到目前为止,在 OS X Mountain Lion 上还没有取得任何成功。这是安装和错误日志:
$ brew install socat
==> Installing socat dependency: readline
==> Downloading http://ftpmirror.gnu.org/readline/readline-6.2.tar.gz
######################################################################## 100.0%
tar: Failed to set default locale
==> Patching
patching file callback.c
patching file input.c
patching file patchlevel
patching file support/shobj-conf
patching file vi_mode.c
==> ./configure --prefix=/usr/local/Cellar/readline/6.2.4 --mandir=/usr/local/Ce
==> make install
==> Caveats
This formula is keg-only: so it was not symlinked into /usr/local.
OS X provides the BSD libedit library, which shadows libreadline.
In order to prevent conflicts when programs look for libreadline we are
defaulting this GNU Readline installation to keg-only.
Generally there are no consequences of this for you. If you build your
own software and it requires this formula, you'll need to add to your
build variables:
LDFLAGS: -L/usr/local/opt/readline/lib
CPPFLAGS: -I/usr/local/opt/readline/include
==> Summary
?? /usr/local/Cellar/readline/6.2.4: 31 files, 1.6M, built in 34 seconds
==> Installing socat
==> Downloading http://www.dest-unreach.org/socat/download/socat-1.7.2.1.tar.bz2
######################################################################## 100.0%
tar: Failed to set default locale
==> Downloading patches
######################################################################## 100.0%
==> Patching
patching file xioexit.c
==> ./configure --prefix=/usr/local/Cellar/socat/1.7.2.1 --mandir=/usr/local/Cel
==> make install
/usr/local/Cellar/socat/1.7.2.1: 8 files, 624K, built in 41 seconds
你看,homebrew
完成了编译并成功安装了socat
。验证 SCTP 是否已启用
$ socat -V
socat by Gerhard Rieger - see www.dest-unreach.org
socat version 1.7.2.1 on Mar 25 2013 08:43:00
running on Darwin version Darwin Kernel Version 12.2.1: Thu Oct 18 12:13:47 PDT 2012; root:xnu-2050.20.9~1/RELEASE_X86_64, release 12.2.1, machine x86_64
features:
#define WITH_STDIO 1
#define WITH_FDNUM 1
#define WITH_FILE 1
#define WITH_CREAT 1
#define WITH_GOPEN 1
#define WITH_TERMIOS 1
#define WITH_PIPE 1
#define WITH_UNIX 1
#undef WITH_ABSTRACT_UNIXSOCKET
#define WITH_IP4 1
#define WITH_IP6 1
#define WITH_RAWIP 1
#define WITH_GENERICSOCKET 1
#undef WITH_INTERFACE
#define WITH_TCP 1
#define WITH_UDP 1
#define WITH_SCTP 1
#define WITH_LISTEN 1
#define WITH_SOCKS4 1
#define WITH_SOCKS4A 1
#define WITH_PROXY 1
#define WITH_SYSTEM 1
#define WITH_EXEC 1
#define WITH_READLINE 1
#undef WITH_TUN
#define WITH_PTY 1
#define WITH_OPENSSL 1
#undef WITH_FIPS
#undef WITH_LIBWRAP
#define WITH_SYCLS 1
#define WITH_FILAN 1
#define WITH_RETRY 1
#define WITH_MSGLEVEL 0 /*debug*/
尝试简单的 SCTP 连接
$ socat - sctp4:my_server:19191
2013/03/25 08:45:46 socat[18838] E socket(2, 1, 132): Protocol not supported
但它失败了。在 socat
主页上它声明了 OS X 支持,但显然 sctp 可能不支持。也许只是使用 sctp 的人太少了,我在 Google 上到处搜索这个错误,但还没有找到任何有用的东西。
我在 Gentoo/Debian 服务器上尝试了同样的事情,它们都工作得很好,我只是不能让它在 OS X 下工作。我对 OS X 世界相当陌生,有什么建议吗?
最佳答案
看起来 OS X 头文件知道 SCTP 协议(protocol),但库实际上并没有实现它。您可以使用第三方扩展来破解它。
我在 OS X 10.8.3 上得到了同样的结果。安装 socat 时,它会在配置中检测 SCTP 支持并设置WITH_SCTP 定义。
$ ./configure | grep -i sctpconfigure: WARNING: include file netpacket/packet.h not found, disabling interfacechecking whether to include SCTP support... yeschecking for IPPROTO_SCTP... yes
但是,如果您查看configure
,就会发现这是一个非常简单的测试。 “是否包含SCTP支持”是是否指定了--enable-sctp,默认是打开的。 “检查 IPPROTO_SCTP”只是定义该协议(protocol)常量是否在头文件中定义。也就是说, header 可以知道该协议(protocol)并具有表示它的值,但底层系统可能无法实际使用。我认为这里的情况就是这样:OS X 内核不提供 SCTP 实现。
较新版本的 OS X 下有对 SCTP 的“初步”第三方支持:https://nplab.fh-muenster.de/groups/wiki/wiki/f366c/ 。安装这个让 SCTP 在 Homebrew 软件的 socat
中为我工作。
[@ in ~]$ socat -d -d sctp-listen:99999 -2013/04/24 22:19:38 socat[270] E socket(2, 1, 132): Protocol not supported2013/04/24 22:19:38 socat[270] N exit(1)[✘ @ in ~]$ sudo kextload /System/Library/Extensions/SCTP.kext[✘ @ in ~]$ socat -d -d -d sctp-listen:99999 -[...snip...]2013/04/24 22:20:51 socat[291] I socket(2, 1, 132) -> 32013/04/24 22:20:51 socat[291] I starting accept loop2013/04/24 22:20:51 socat[291] N listening on LEN=16 AF=2 0.0.0.0:34463
警告:这是一个第三方内核扩展,它是“初步的”,没有大量的文档,而且我不能保证来源。这可能很脆弱,并且可能很难从错误中恢复。我会在虚拟机中执行此操作,而不是在主机中执行此操作。虚拟机非常适合试验低级内容和各种机器配置。 (举个例子:为了解决这个问题,我以 root 身份对我的机器进行了一系列的修改,并做了一些有问题的事情,然后,我将我的虚拟机恢复到快照,就好像它从未发生过一样。)
另一个选择是查看 libusrsctp
中的“用户层”(非内核)SCTP 支持,可在 Homebrew 中使用。这不会让 socat
与 SCTP 一起使用,但可能会支持您使用它进行其他爱好编程。
关于macos - OS X Mountain Lion 上的 Homebrew socat,sctp "Protocol not supported",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15606087/
在我的服务器上使用 Socat 我有当前命令: socat -u tcp-l:7767,fork system:/app/getmsg.sh 所有 getmsgh.sh 所做的是: read MESS
外部数据提供者与我们的其中一台服务器建立 tcp 连接。 我想使用 socat 来“多路复用”传入的数据,以便多个程序可以接收从外部数据提供者发送的数据。 socat -u TCP4-LISTEN:4
我正在使用 socat 命令在我的嵌入式 linux 设备上创建一个 tty 接口(interface),例如: socat pty,link=/dev/ttyS9 TCP:10.0.10.1:999
我一直在尝试使用socat通过虚假的HTTP答复对正在侦听的套接字的每个连接进行响应。我无法正常工作。可能是因为我使用的是Socat的Cygwin版本?我不知道。 问题的一部分是我不希望将第二个参数写
一段时间后,我终于让 socat 以与 putty 相同的方式运行,使用: stty -F /dev/ttyS2 115200 cs8 ixoff socat $(tty),raw,echo=0,es
我在我的 ubuntu 笔记本上创建了两个虚拟串行端口。 -> sudo socat/dev/ttyUSB7/dev/ttyUSB8 现在我想删除串行端口以及它们之间的连接。 我找不到执行此操作的命令
我要模拟 3 个不同的应用程序,每个都连接到不同的串行调制解调器 (rs232)。我希望每个应用程序都通过在“虚拟”串行线上写入来与其他应用程序通信我尝试配置 socat 应用程序,但现在我只能使用以
我正在运行这样的隧道: socat TCP-LISTEN:9090,fork TCP:192.168.1.3:9090 我想运行一个脚本来执行带有通过隧道的字符串的代码。 脚本不改变字符串,只独立处理
我使用带有 OpenWRT 的 TP-Link 路由器 TL-WR710N 作为 IPv4 到 IPv6 的转换器/网关,使用以下 socat 命令: socat TCP4-LISTEN:80,for
我使用以下代码接收连接: socat TCP-LISTEN:4000,fork EXEC:./myscrpit" 我的脚本中需要一个发件人的 IP 地址,但是 SOCAT_PEERADDR 没有设置,
我正在编写 JUnit 测试来测试我的应用程序。该应用程序是用 Java 编写的,并使用 purejavacomm 库。为了测试串行解析器,我想设置一个虚拟串行端口,以便测试可以与解析器通信。除了简单
我在 kubernetes 的一个端口上运行 pyspark。我正在尝试转发到我的本地机器。执行 python 文件时出现此错误。 Forwarding from 127.0.0.1:7077 ->
我正在使用 socat 版本 1.7.3.2 从 VLAN 以太网设备创建字符设备以进行通信。我使用以下命令创 build 备: socat INTERFACE:wwan0.vlan_dev1,typ
我想用 socat 创建一个端口转发器,以便通过单个 openssl channel 重定向多个分支连接。我可以在不使用任何 tun 或 vpn 的情况下在 socat 中执行此操作吗? 到目前为止,
如何用socat测试远程端口是否可达? 通过 netcat 我们可以 nc -zv 192.168.1.15 22 如何使用 socat 做到这一点? 最佳答案 由于 OP 请求等效于 -z,因此以下
我正在使用 Windows 的 socat 作为客户端通过 SSH 隧道 DNS,它可以完美地工作,直到 ssh 连接终止或暂时不可用 - 当这种情况发生时 socat Windows 客户端终止并需
目标是使用串行接口(interface)连接到嵌入式设备。到目前为止,我使用过: stty -F /dev/ttyS2 115200 cs8 ixoff socat readline,history=
此命令(串行端口重定向器)接受 TCP:11313 上的单个连接: socat PTY,link=/dev/ttyV1,echo=0,raw,unlink-close=0 TCP-LISTEN:113
我有一个开放端口的服务器,每秒接收 50 到 1000 条消息。我所说的消息是指发送单行文本。 本质上,我们希望将这些消息记录在一个文件中,该文件将每小时(或 x 分钟)处理一次。 我已经创建了一个在
我只想要一个进程打开 socat 创建的 PTY 设备。 我使用以下内容创建 my_ser设备,但它可以被多个进程读/写。 socat -t 0 INTERFACE:my_nw,type=2 PTY,
我是一名优秀的程序员,十分优秀!