GO FTP 簡易服務端和客戶端
阿新 • • 發佈:2022-05-11
服務端:
package main import ( "log" "goftp.io/server/core" "goftp.io/server/driver/file" ) func main() { Name := "FTP Server" rootPath := "./static" //FTP根目錄 Port := 2121 //FTP 埠 var perm = core.NewSimplePerm("test", "test") // Server options without hostname or port opt := &core.ServerOpts{ Name: Name, Factory: &file.DriverFactory{ RootPath: rootPath, Perm: perm, }, Auth: &core.SimpleAuth{ Name: "username", // FTP 賬號 Password: "Password", // FTP 密碼 }, Port: Port, } // start ftp server s := core.NewServer(opt) err := s.ListenAndServe() if err != nil { log.Fatal("Error starting server:", err) } }
客戶端: 三秒傳一次,傳成功為止
package main import ( "fmt" "log" "os" "time" "github.com/jlaffaye/ftp" ) func main() { // Do something with the FTP conn for { newFunction() time.Sleep(3 * time.Second) } } func newFunction() { file, err := os.Open("data.dmp") if err != nil { log.Println("讀取檔案:") log.Println(err) return } c, err := ftp.Dial("127.0.0.1:2121", ftp.DialWithTimeout(5*time.Second)) //c, err := ftp.Dial("172.16.33.194:2121", ftp.DialWithTimeout(5*time.Second)) if err != nil { log.Println("登入0:") log.Println(err) return } err = c.Login("username", "password") if err != nil { log.Println("登入1:") log.Println(err) return } if err := c.Stor(`data.dmp`, file); err != nil { log.Println("上傳:") log.Println(err) return } else { log.Println("上傳成功") os.Exit(0) } }