第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

GO編程,在閱讀器事件上阻止讀取功能

GO編程,在閱讀器事件上阻止讀取功能

Go
開滿天機 2023-06-12 09:58:33
我是 Go 編程的初學者,我對 bufio 讀者的問題感到困惑。我正在編寫一種聊天客戶端,它必須實時顯示和發(fā)送我們的消息。但是直到我在我的終端中按下回車鍵,我收到的消息才會顯示。經(jīng)過幾次測試,問題似乎出在我的“inputListener()”函數(shù)上,因為如果我在讀取來自服務器的消息后放置它,來自服務器的消息將首先顯示。我認為 Read 函數(shù)可能會阻塞我的循環(huán),直到它得到一個 '\n' 或類似的東西。這是我的代碼:package mainimport "os"import "strconv"import "net"import "bufio"/*Recovery our input message into a buffer*/func inputListener()([] byte){    buf := make([]byte, 512)    readerInput := bufio.NewReader(os.Stdin)    _, err := readerInput.Read(buf)    if err != nil{        panic("Error reading input.")        os.Exit(0)    }    return buf}func main(){if len(os.Args) != 3{    println("Usage: ",os.Args[0], " <host> <port>\n")    os.Exit(0)}//Recovery the port.port, err := strconv.Atoi(os.Args[2])if err != nil{  panic("Error during the port recovery\n")  os.Exit(0)}println(port)/*Join the adresse*/addr := os.Args[1] + ":" + strconv.Itoa(port)println(addr)/*  sources -- https://golang.org/pkg/net/  */conn, err := net.Dial("tcp", addr)if err != nil{    panic("Error connecting " + addr)    os.Exit(0)}buf := make([]byte, 512)t := make([]byte, 512)for {    /*Receive data from server*/    size, err := conn.Read(buf)    if err != nil {        panic("Error reading output.")        os.Exit(0)    }    if size >= 0{        print(string(buf[0:size]))    }    /*Data we need to send*/    t = inputListener()    if len(t) >= 0{        conn.Write(t)    }} conn.Close()}我需要按收到的每條消息回車:/預先感謝您的回答!
查看完整描述

1 回答

?
慕尼黑的夜晚無繁華

TA貢獻1864條經(jīng)驗 獲得超6個贊

你可以嘗試這樣的事情:


package main


import (

    "bufio"

    "io"

    "net"

    "os"

    "strconv"

)


/*Recovery our input message into a buffer*/

func inputListener() []byte {

    buf := make([]byte, 512)

    readerInput := bufio.NewReader(os.Stdin)

    _, err := readerInput.Read(buf)

    if err != nil {

        panic("Error reading input.")

    }

    return buf

}


func main() {

    if len(os.Args) != 3 {

        println("Usage: ", os.Args[0], " <host> <port>\n")

        os.Exit(0)

    }


    //Recovery the port.

    port, err := strconv.Atoi(os.Args[2])

    if err != nil {

        panic("Error during the port recovery\n")

    }

    println(port)


    /*Join the adresse*/

    addr := os.Args[1] + ":" + strconv.Itoa(port)

    println(addr)


    /*  sources -- https://golang.org/pkg/net/  */


    conn, err := net.Dial("tcp", addr)

    if err != nil {

        panic("Error connecting " + addr)

    }

    defer conn.Close()


    go io.Copy(os.Stdout, conn)


    r := bufio.NewReader(os.Stdin)

    for {

        p, err := r.ReadSlice('\n')

        if err != nil {

            panic("Error reading output.")

        }

        conn.Write(p)

    }

}


查看完整回答
反對 回復 2023-06-12
  • 1 回答
  • 0 關(guān)注
  • 169 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號