• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

goftp通信

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

main.go

package main

import (
    "strings"
    ftp4go "github.com/shenshouer/ftp4go"
    "fmt"
    "flag"
    "github.com/larspensjo/config"
    "time"
)

var (
    configFile = flag.String("configfile", "config.ini", "General configuration file")
)

//配置文件
var TOPIC = make(map[string]string)
var TOPIC1 = make(map[string]string)
//配置文件

func main() {

    /*读取配置*/
    cfg, err1 := config.ReadDefault(*configFile)
    if err1 != nil {
        restart("读取配置文件失败")
    }
    if cfg.HasSection("server") {
        section, err1 := cfg.SectionOptions("server")
        if err1 == nil {
            for _, v := range section {
                options, err1 := cfg.String("server", v)
                if err1 == nil {
                    TOPIC[v] = options
                }
            }
        }
    }
    if cfg.HasSection("client") {
        section, err1 := cfg.SectionOptions("client")
        if err1 == nil {
            for _, v := range section {
                options, err1 := cfg.String("client", v)
                if err1 == nil {
                    TOPIC1[v] = options
                }
            }
        }
    }
    /*读取配置*/

    /*连接ftp*/
    ftpClient := ftp4go.NewFTP(0) 
    _, err := ftpClient.Connect(TOPIC["address"], ftp4go.DefaultFtpPort, "")
    if err != nil {
        restart("连接失败")
    }
    defer ftpClient.Quit()
    _, err = ftpClient.Login(TOPIC["name"], TOPIC["password"], "")
    if err != nil {
        restart("登陆失败")
    }
    /*连接ftp*/

    /*读取目录*/
    var files []string
    c1 := make(chan string)
    go func(){            
        if files, err = ftpClient.Nlst(TOPIC["path"]); err != nil {
            restart("读取目录失败")     
        }
        c1 <- "读取目录成功"
    }()
    select {
    case res := <-c1:
        fmt.Println(res)
    case <-time.After(time.Second * 10):
        restart("读取目录超时")
    }
    if len(files) == 0 {
        restart("无可下载文件") 
    }
    /*读取目录*/
    
    /*执行下载*/
    for i := 0; i < len(files); i++ {
        ch := files[i]
        str := strings.Replace(ch, " ", ",", -1)
        s := strings.Split(str,",")
        x := len(s)-1
        file1 := s[x]
        if err = ftpClient.DownloadResumeFile(TOPIC["path"]+"/"+file1, TOPIC1["path"]+file1, false); err == nil{
            fmt.Println(TOPIC["path"]+"/"+file1+"--->下载成功")
            _, err = ftpClient.Delete(TOPIC["path"]+"/"+file1)
            if err == nil {
                fmt.Println(TOPIC["path"]+"/"+file1+"--->删除成功")
            }else{
                restart("删除失败")
                break
            }
        }else{
            restart("下载失败")
            break
        }
    }
    /*执行下载*/
    restart("新的一轮执行")
}

func restart(err string){  
    fmt.Println("重启--------->"+err)
    time.Sleep(time.Second * 40)
    main()
}

config.ini

[server]
address = 192.168.1.58
name = test
password = 123123
path = /

[client]
path = D:/Ftp/

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
GO语言学入门学习,学习资料推荐发布时间:2022-07-10
下一篇:
Go函数发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap