Sockets golang将插座连接到标准DIN/Stdout
将插座连接到标准输入/标准输出的最佳方式是什么。我知道我们可以将stdin/Stdout重定向到任何文件描述符,但是如何对套接字执行同样的操作呢。(比如socat的工作原理) Go中的套接字类型实现了Sockets golang将插座连接到标准DIN/Stdout,sockets,redirect,go,stdin,named-pipes,Sockets,Redirect,Go,Stdin,Named Pipes,将插座连接到标准输入/标准输出的最佳方式是什么。我知道我们可以将stdin/Stdout重定向到任何文件描述符,但是如何对套接字执行同样的操作呢。(比如socat的工作原理) Go中的套接字类型实现了io.Writer接口,而os.Stdin实现了io.Reader,因此我的第一个猜测是尝试bufio.Writer。它可能看起来像: package main import ( "bufio" "os" ) func main() { socket := getSock
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
}
你写的代码在哪里?你试过什么了吗。我添加了一些东西来打开管道,并将管道的fd设置为terminal.MakeRaw(),但是看起来我们不能用套接字来做类似的事情。创建套接字是指net.Dial()?我需要将当前终端连接到unix套接字。-插座的另一端正在运行agetty。我是否必须使用termios结构来完成此任务?@Harish
net.Dial
可以打开unix套接字:net.Dial(“unix”,“/path/to/unix.sock”)