Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sockets golang将插座连接到标准DIN/Stdout_Sockets_Redirect_Go_Stdin_Named Pipes - Fatal编程技术网

Sockets golang将插座连接到标准DIN/Stdout

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

将插座连接到标准输入/标准输出的最佳方式是什么。我知道我们可以将stdin/Stdout重定向到任何文件描述符,但是如何对套接字执行同样的操作呢。(比如socat的工作原理)

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
}

你写的代码在哪里?你试过什么了吗。我添加了一些东西来打开管道,并将管道的fd设置为terminal.MakeRaw(),但是看起来我们不能用套接字来做类似的事情。创建套接字是指net.Dial()?我需要将当前终端连接到unix套接字。-插座的另一端正在运行agetty。我是否必须使用termios结构来完成此任务?@Harish
net.Dial
可以打开unix套接字:
net.Dial(“unix”,“/path/to/unix.sock”)