亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

通過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個贊

很難說這個程序在做什么(因為只有一部分)??雌饋砟呀泴崿F了ReadWriteCloser從stdin讀取并寫入stdout(以及switch語句的一部分)的實現。

通常,任何程序都可以從stdin讀取并寫入stdout(和stderr)。您可以使用管道將一個程序的標準輸出鏈接到另一個程序的標準輸入(例如client | server),但這是單向的。在您的情況下,聽起來您希望客戶端的標準輸入到服務器的標準輸出,反之亦然。在當地的發展,Unix套接字通常用于這一點,但你也許可以創建一個命名管道(含mkfifo),如所示這里。

同樣,從一個不包含jsonrpc2任何其他程序包的超級簡單的玩具程序開始可能會更容易。

希望對您有所幫助!


查看完整回答
反對 回復 2021-04-19
  • 1 回答
  • 0 關注
  • 240 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號