我想创建一个到远程服务器的 TCP 连接socat
,其中客户端发送
- 对图像文件的操作(
"convert"
、"open"
等) - 图像(二进制内容)本身
然后服务器将使用给定的操作处理图像。
我的第一个想法是在二进制内容之前传递此文本操作类型:
# client
socat tcp:server:9999 -\
< <(echo "open"; cat path/to/imgfile)
# server
socat tcp-listen:9999 - | {
IFS= read -r action
cat - > /tmp/imgfile
# do process image file with action type ...
}
这似乎适用于特定情况,但不灵活,例如,当需要传递多个参数时。在二进制内容之前加上文本让我觉得,图像文件可能会被损坏?
因此,我试图找到一个更简洁的解决方案,一个一个地传递两个参数(这里称为双工通信):
到目前为止,我的尝试并不是以下方面的专家socat
:
# client
socat\
tcp:server:9999\
system:'echo "open"; IFS= read -r ack; cat path/to/image.png'
# server
socat tcp-listen:9999\
system:'IFS= read -r action; echo "ACK"; binary=$(cat -); echo "process image with action now..."'
目前让我
破管
这种类型的双工通信是否可能socat
(在最好的情况下不打开新端口)?
我是否监督了一个更简单的替代方案?
我可能应该说,这是以最简单/最普通的方式完成的,没有进一步使用框架,如果可能的话没有 HTTP 服务器开销。Shell 是 Bash,没有可用的 ZSH。也可以使用 Vanilla Python。