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()
_, 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 * ):
restart("读取目录超时")
}
if len(files) == {
restart("无可下载文件")
}
/*读取目录*/ /*执行下载*/
for i := ; i < len(files); i++ {
ch := files[i]
str := strings.Replace(ch, " ", ",", -)
s := strings.Split(str,",")
x := len(s)-
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 * )
main()
}

config.ini

[server]
address = 192.168.1.58
name = test
password =
path = / [client]
path = D:/Ftp/

go ftp通信的更多相关文章

  1. 【转】Android端与Android端利用WIFI进行FTP通信

    原文网址:http://www.cnblogs.com/zhangkai5157/p/4303188.html 一.客户端通信工具类: import java.io.File; import java ...

  2. Android端与Android端利用WIFI进行FTP通信

    一.客户端通信工具类: import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; im ...

  3. Windows10与虚拟机中CentOS-7.2进行ftp通信

    首先Linux的IP地址可以通过以下命令获取: ifconfig Windows10上面IP地址通过下面命令获取 ipconfig 你首先要保证你的主机和Linux虚拟机是可以ping通的(ping都 ...

  4. 使用.net FtpWebRequest 实现FTP常用功能 上传 下载 获取文件列表 移动 切换目录 改名 .

    平时根本没时间搞FTP什么的,现在这个项目需要搞FTP,为什么呢,我给大家说下项目背景,我们的一个应用程序上需要上传图片,但是用户部署程序的服务器上不让上传任何东西,给了我们一个FTP账号和密码,让我 ...

  5. TCP/IP FTP/TFTP

    引言 从一台计算机向另一台计算机传送文件是在连网或互联网环境中最常见的任务.而FTP和TFTP就是这样的协议. 关于文件传输协议FTP? 端口21使用服务TCP [FTP模型] FTP连接? 1.控制 ...

  6. 高可用的Spring FTP上传下载工具类(已解决上传过程常见问题)

    前言 最近在项目中需要和ftp服务器进行交互,在网上找了一下关于ftp上传下载的工具类,大致有两种. 第一种是单例模式的类. 第二种是另外定义一个Service,直接通过Service来实现ftp的上 ...

  7. TCP、UDP通信

    开放系统互连参考模型 (Open System Interconnect 简称OSI) OSI七层模型 1.应用层2.表示层3.会话层4.传输层5.网络层6.数据链路层7.物理层 TCP/IP模型1. ...

  8. http和ftp下载的区别

    HTTP和FTP是两种网络传输协议的缩写,FTP是File Transportation Protocol(文件传输协议)的缩写,而HTTP则是Hyper Text Transportation Pr ...

  9. 下载文件的协议:HTTP、FTP、P2P

    本篇学习笔记以HTTP.FTP.P2P叙述与网上下载文件有关的协议 需要掌握的要点: 下载一个文件可以使用 HTTP 或 FTP,这两种都是集中下载的方式,而 P2P 则换了一种思路,采取非中心化下载 ...

随机推荐

  1. Atitit it行业图像处理行业软件行业感到到迷茫的三大原因和解决方案

    Atitit it行业图像处理行业软件行业感到到迷茫的三大原因和解决方案 1. 迷茫的原因最大原因是未知1 1.1. 我在哪里??自己的定位,1 1.2. 正确方向是什么??1 1.3. 虽然找到方向 ...

  2. 关于在node项目使用ioredis遇到的几个坑

    1,在ioredis中使用redis命令的方法的时候,如果有2个以上的参数,必须使用then方法来接收返回的结果,比如: redis.hget('key','field').then(function ...

  3. bug ,improvements, features jira等信息

    https://issues.apache.org/jira/secure/ReleaseNote.jspa?version=12341764&projectId=12315522 https ...

  4. 谷歌Chrome浏览器小于12px字号显示的BUG

    webkit的私有属性:html{-webkit-text-size-adjust:none;}

  5. jqgrid传入的json数据,赋值了但是没有在表格上显示

    1.  datatype: "local",属性加入这个 2. dataValue就是json对象 for (var i = 0; i <= dataValue.length ...

  6. 每日英语:The Power of Parents Who Say 'No'

    I grew up in an affluent area. Most kids owned multiple Cabbage Patch dolls and Gear bags and pairs ...

  7. 每日英语:Booming Tech Sector Redraws the Map

    China's high-tech companies have made their mark on the nation's economy. Now, with growing cash and ...

  8. 关于linux上cron服务的python封装工具

    关于cron:定时任务服务,一般linux自带且已启动.(pgrep cron查看cron服务是否启动了.) 关于plan:一个通过python来定制cron服务的工具.其官网:http://plan ...

  9. 2015-2016款Mac安装win10多分区教程,不破坏GUID分区表。

    原文:https://bbs.feng.com/read-htm-tid-10895240.html 参考:https://bbs.feng.com/read-htm-tid-9940193.html ...

  10. 纯html实现将网页页面分享到微信朋友圈添加缩略图图片的方法

    在分享页面中的body中最前面添加一个隐藏的div,里面放一个300*300的正方形图片即可:如下 <div style="display:none"><img ...