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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

將多個(gè) tcp 流寫(xiě)入單個(gè)文件的最佳方法是什么?

將多個(gè) tcp 流寫(xiě)入單個(gè)文件的最佳方法是什么?

Go
慕絲7291255 2022-07-11 16:25:49
我有多個(gè)二進(jìn)制傳入 tcp 流,不斷地隨機(jī)到達(dá)。我想將它們中的每一個(gè)寫(xiě)入單獨(dú)的文件。這些文件應(yīng)該包含從連接的初始打開(kāi)到遠(yuǎn)程客戶端關(guān)閉連接的所有內(nèi)容。我在下面有這個(gè),它似乎有效,但這是一種有效的方法嗎?//error handling to be added laterfunc main() {    listen, _ := net.Listen("tcp4", ":8080")    defer listen.Close()    for {        connection, _ := listen.Accept()        defer connection.Close()        //"myfile.dat" to be replaced later with variable creating unique names        go handleConnection(connection, "myfile.dat")    }}func handleConnection(connection net.Conn, myFile string) {    outputFile, _ := os.Create(myFile)    defer outputFile.Close()    fileWriter := bufio.NewWriter(outputFile)    for {        serverConnReader := bufio.NewReader(connection)        io.Copy(fileWriter, serverConnReader)        break    }}
查看完整描述

1 回答

?
長(zhǎng)風(fēng)秋雁

TA貢獻(xiàn)1757條經(jīng)驗(yàn) 獲得超7個(gè)贊

關(guān)于代碼的一些注釋:

  • 處理錯(cuò)誤。

  • defer connection.Close()handleConnection. 否則,連接不會(huì)關(guān)閉,直到程序終止。

  • 將兩行代碼handleConnection移出for循環(huán),丟棄for循環(huán)。循環(huán)沒(méi)有做任何事情。

  • 添加defer fileWriter.Flush()以刷新寫(xiě)入器中緩沖的任何最后一位數(shù)據(jù)(但請(qǐng)參閱下一點(diǎn))。

  • 要求文件直接從連接中復(fù)制。

這是代碼:

func main() {


    listen, err := net.Listen("tcp4", ":8080")

    if err != nil {

        log.Fatal(err)

    }

    defer listen.Close()


    for {

        connection, err := listen.Accept()

        if err != nil {

            log.Fatal(err)

        }

        go handleConnection(connection, "myfile.dat")

    }

}


func handleConnection(connection net.Conn, myFile string) {

    defer connection.Close()

    outputFile, err := os.Create(myFile)

    if err != nil {

        log.Fatal(err)

    }

    defer outputFile.Close()

    _, err = outputFile.ReadFrom(connection)

    if err != nil {

        log.Fatal(err)

    }

}


查看完整回答
反對(duì) 回復(fù) 2022-07-11
  • 1 回答
  • 0 關(guān)注
  • 96 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

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