<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

          獲取文件信息需要用到os. Stat接口,發(fā)送文件前開啟接收者(服務(wù)端),啟動(dòng)客戶端先發(fā)送文件名給接收者,接收者收到文件名返回確認(rèn)信息"ok",才讀取本地文件 發(fā)送給接收者。

      發(fā)送者:

      package main
      
      import (
          "fmt"
          "io"
          "net"
          "os"
      )
      
      func main() {
          fmt.Println("請(qǐng)輸入接收者地址(IP:PORT):")
          var addr string
          fmt.Scan(&addr)
          fmt.Println("請(qǐng)輸入需要傳輸?shù)奈募?/span>")
          var path string
          fmt.Scan(&path)
          info, errf := os.Stat(path)
          if errf != nil{
              fmt.Println("os.Stat errf =", errf)
              return
          }
      
          conn, err := net.Dial("tcp", addr)
          if err != nil{
              fmt.Println("net.Dial err =",err)
              return
          }
          defer conn.Close()
      
          _, err = conn.Write([]byte(info.Name()))
          if err != nil{
              fmt.Println("conn.Write info.Name err =",err)
              return
          }
          var n int
          buf := make([]byte, 1024)
          n, err = conn.Read(buf)
          if err != nil{
              fmt.Println("conn.Read ok err =", err)
              return
          }
          if "ok" == string(buf[:n]){
              fmt.Println("ok")
              SendFile(path, conn)
          }
      }
      
      func SendFile(path string, conn net.Conn){
           file , err := os.Open(path)
      
           if err != nil{
               fmt.Println("os.Open err =", err)
               return
           }
           defer file.Close()
           buf := make([]byte, 1024 * 4)
      
           for {
               n, err := file.Read(buf)
               if err != nil{
                   if err == io.EOF{
                       fmt.Println("文件發(fā)送完畢")
                  } else{
                      fmt.Println("file.Read err =",err)
                  }
      
                   return
               }
               if n == 0{
                   fmt.Println("文件發(fā)送完畢")
                   break
               }
               conn.Write(buf[:n])
           }
      }

      接收者:

      package main
      
      import (
          "fmt"
          "io"
          "net"
          "os"
      )
      
      func main() {
          fmt.Println("請(qǐng)你的地址(IP:PORT):")
          var addr string
          fmt.Scan(&addr)
          listenner, err := net.Listen("tcp", addr)
          if err != nil{
              fmt.Println("net.Listen err =", err)
              return
          }
          defer listenner.Close()
      
          conn, errl := listenner.Accept()
          if errl != nil{
              fmt.Println("listenner.Accept err =", errl)
              return
          }
          var n int
          buf := make([]byte, 1024)
          n, err = conn.Read(buf)
          if err != nil{
              fmt.Println("conn.Read fileName err =", err)
              return
          }
          fileName := string(buf[:n])
          n, err = conn.Write([]byte("ok"))
          if err != nil{
              fmt.Println("conn.Write ok err =", err)
              return
          }
      
          RecvFile(fileName, conn)
      }
      
      func RecvFile(fileName string, conn net.Conn){
           file , err := os.Create(fileName)
           if err != nil{
               fmt.Println("os.Create err =", err)
               return
           }
      
           defer file.Close()
      
           buf := make([]byte, 1024 * 4)
           for{
               n, err := conn.Read(buf)
               if err != nil{
                   if err == io.EOF{
                       fmt.Println("文件接收完成")
                  } else {
                      fmt.Println("conn.Read err =", err)
                  }
                  return
              }
      
               n, err = file.Write(buf[:n])
               if err != nil{
                   fmt.Println("file.Write err =", err)
                   break
              }
           }
      }

       

      posted on 2018-12-29 13:51  chifandeyu  閱讀(1176)  評(píng)論(0)    收藏  舉報(bào)

      主站蜘蛛池模板: av永久免费网站在线观看| 精品无码一区二区三区爱欲 | 玩弄丰满少妇人妻视频| 成人精品天堂一区二区三区| 国产在线中文字幕精品 | 日韩有码中文字幕国产| 国产精品乱人伦一区二区| 日本久久久www成人免费毛片丨| 成人国产精品中文字幕| 免费无码高H视频在线观看| 第一精品福利导福航| 欧美激情一区二区三区在线| 日韩av一区二区不卡在线| 日本无人区一区二区三区| 欧美性xxxxx极品| 成人国产精品一区二区网站公司| 精品人妻一区二区三区蜜臀| 国产精品 欧美 亚洲 制服| 国产普通话对白刺激| 日韩亚洲国产激情一区二区| 亚洲人成电影在线天堂色| 亚洲国产一区二区三区| 国产mv在线天堂mv免费观看 | 日本区二区三区不卡视频| 国产精品办公室沙发| 亚洲天堂av日韩精品| AV秘 无码一区二| 国产精品中文字幕久久| 久久一日本综合色鬼综合色| 久久人妻无码一区二区| 大关县| 日韩中文字幕亚洲精品一| 精品偷自拍另类精品在线| 少妇又紧又色又爽又刺激视频 | 国产乱人伦真实精品视频| 亚洲av第三区国产精品| 2020国产欧洲精品网站| 亚洲精品久久麻豆蜜桃| 国产一区二区三区精品综合| 国产一区韩国主播| 国产午夜精品福利91|