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

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

將多個 tcp 流寫入單個文件的最佳方法是什么?

將多個 tcp 流寫入單個文件的最佳方法是什么?

Go
慕絲7291255 2022-07-11 16:25:49
我有多個二進制傳入 tcp 流,不斷地隨機到達。我想將它們中的每一個寫入單獨的文件。這些文件應該包含從連接的初始打開到遠程客戶端關閉連接的所有內容。我在下面有這個,它似乎有效,但這是一種有效的方法嗎?//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 回答

?
長風秋雁

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

關于代碼的一些注釋:

  • 處理錯誤。

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

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

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

  • 要求文件直接從連接中復制。

這是代碼:

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)

    }

}


查看完整回答
反對 回復 2022-07-11
  • 1 回答
  • 0 關注
  • 86 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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