golang 将套接字附加到标准输入/标准输出
Posted
技术标签:
【中文标题】golang 将套接字附加到标准输入/标准输出【英文标题】:golang attach a socket to Stdin/Stdout 【发布时间】:2016-05-07 00:27:21 【问题描述】:将套接字连接到 Stdin/Stdout 的最佳方法是什么。我知道我们可以将标准输入/标准输出重定向到任何文件描述符,但是我们如何对套接字做同样的事情。 (比如 socat 的工作原理)?
【问题讨论】:
你写的代码在哪里?你有没有尝试过。 我添加了一些东西来打开管道并将管道的 fd 设置为 terminal.MakeRaw() 但看起来我们不能用套接字做类似的事情。 【参考方案1】:Go 中的套接字类型实现了io.Writer
接口,而os.Stdin
实现了io.Reader
,所以我的第一个猜测是尝试bufio.Writer
。它可能看起来像:
package main
import (
"bufio"
"os"
)
func main()
socket := getSocket() // left as an exercise for you to implement
writer := bufio.NewWriter(socket)
writer.ReadFrom(os.Stdin)
// do something to determine when to stop
【讨论】:
创建套接字是指 net.Dial() 吗?我需要将当前终端连接到 unix 套接字。 - 套接字的另一端正在运行 getty。我是否必须使用 termios 结构来完成此操作? @Harishnet.Dial
可以打开 unix 套接字:net.Dial("unix", "/path/to/unix.sock")
以上是关于golang 将套接字附加到标准输入/标准输出的主要内容,如果未能解决你的问题,请参考以下文章