gpt4 book ai didi

go - 服务器客户端连接通过 stdio

转载 作者:数据小太阳 更新时间:2023-10-29 03:11:03 30 4
gpt4 key购买 nike

有一个客户端和一个服务器通过 stdio 进行通信。我想我基本上对标准输入和标准输出感到困惑。我对 stdio 有一些疑问。

  1. 服务器是否从客户端写入的标准输入或标准输出读取请求?
  2. 服务器是否将响应写入客户端可以读取的标准输入或标准输出?

服务器端连接部分代码如下。

case "stdio":
log.Println("server: reading on stdin, writing on stdout")
<-jsonrpc2.NewConn(context.Background(), jsonrpc2.NewBufferedStream(stdrwc{}, jsonrpc2.VSCodeObjectCodec{}), handler, connOpt...).DisconnectNotify()
log.Println("connection closed")
return nil


type stdrwc struct{}

func (stdrwc) Read(p []byte) (int, error) {
return os.Stdin.Read(p)
}

func (stdrwc) Write(p []byte) (int, error) {
return os.Stdout.Write(p)
}

func (stdrwc) Close() error {
if err := os.Stdin.Close(); err != nil {
return err
}
return os.Stdout.Close()
}

最佳答案

很难说这个程序在做什么(因为只有一部分)。看起来您有一个 ReadWriteCloser 的实现,它从 stdin 读取并写入 stdout(以及 switch 语句的一部分)。

通常任何程序都可以从标准输入读取并写入标准输出(和标准错误)。您可以使用管道(例如 client | server)将一个程序的标准输出链接到另一个程序的标准输入,但这是单向的。在您的情况下,听起来您希望客户端的标准输入转到服务器的标准输出,反之亦然。在本地开发中,通常使用 Unix 套接字,但您可以创建命名管道(使用 mkfifo),如图所示 here .

此外,从一个 super 简单的玩具程序开始可能会更容易,它不包括 jsonrpc2 和任何其他包。

希望对您有所帮助!

关于go - 服务器客户端连接通过 stdio,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51680991/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com