![](/img/trans.png)
[英]Difference between Unix domain SOCK_DGRAM and SOCK_SEQPACKET?
[英]Does socat support SOCK_SEQPACKET for Unix domain socket?
考虑以下设置,其中一个socat实例将数据从stdin
管道传输到 unix 域套接字,另一个实例从 unix 域套接字读取该数据并将其写入stdout
:
客户:
(while true; do echo "hello"; sleep 1; done) | socat STDIN UNIX:test.sock
服务器:
socat UNIX-LISTEN:test.sock STDOUT
此设置按预期工作,服务器以 1 秒的间隔将hello
打印到stdout
。 socat
有没有办法使用SOCK_SEQPACKET套接字类型?
在进一步调查手册页后,我了解到SOCK_SEQPACKET
受socat
支持:
socktype= 将套接字的类型(指定为 socket() 或 socketpair() 调用的第二个参数)设置为 [int]。 地址解析不受此选项的影响。 在 Linux 下,1 表示 stream 面向套接字,2 表示数据报套接字,3 表示原始套接字, 5 seqpacket (流保持数据包边界)。
客户:
(while true; do echo "hello"; sleep 1; done) | socat STDIN UNIX:test.sock,socktype=5
服务器:
socat UNIX-LISTEN:test.sock,socktype=5 STDOUT
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.