为了账号安全,请及时绑定邮箱和手机立即绑定

通过stdio的服务器客户端连接

通过stdio的服务器客户端连接

Go
Helenr 2021-03-29 15:18:24
有一个通过stdio通信的客户端和服务器。我认为我对stdin和stdout基本上感到困惑。我对stdio有一些疑问。服务器是否从客户端写入的stdin或stdout中读取请求?服务器是否将响应写到客户端可以读取的stdin或stdout?下面是服务器端连接部分的代码片段。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 niltype 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()}
查看完整描述

1 回答

?
慕雪6442864

TA贡献1812条经验 获得超5个赞

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

通常,任何程序都可以从stdin读取并写入stdout(和stderr)。您可以使用管道将一个程序的标准输出链接到另一个程序的标准输入(例如client | server),但这是单向的。在您的情况下,听起来您希望客户端的标准输入到服务器的标准输出,反之亦然。在当地的发展,Unix套接字通常用于这一点,但你也许可以创建一个命名管道(含mkfifo),如所示这里。

同样,从一个不包含jsonrpc2任何其他程序包的超级简单的玩具程序开始可能会更容易。

希望对您有所帮助!


查看完整回答
反对 回复 2021-04-19
  • 1 回答
  • 0 关注
  • 247 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号