Browse Source

文件发送方式修改为udp模式

master
453530270@qq.com 2 years ago
parent
commit
df465d1adb
  1. 2
      fss/README.md
  2. 40
      fss/core/sendzip.go
  3. BIN
      fss/fss
  4. 2
      fss/util/fsutil.go

2
fss/README.md

@ -0,0 +1,2 @@
./fss -t /sss/
末尾的/ 需要加上,未加上末尾/ 的话,会导致 将目录也打包进入

40
fss/core/sendzip.go

@ -4,8 +4,10 @@ import (
"fmt" "fmt"
"fss/config" "fss/config"
"fss/util" "fss/util"
"io"
"net" "net"
"net/http" "net/http"
"os"
"path" "path"
"path/filepath" "path/filepath"
"strings" "strings"
@ -70,7 +72,7 @@ func SendZip(w http.ResponseWriter, r *http.Request) {
// udp 模式发送文件 // udp 模式发送文件
/* /*
* serip 服务器ip, * serip 服务器ip,
* absfilepath 发送文件的时间路径, * absfilepath 发送文件的实际路径,
* fname 文件名 * fname 文件名
* message 携带部分信息的消息 * message 携带部分信息的消息
* http.ResponseWriter * http.ResponseWriter
@ -88,15 +90,35 @@ func UdpSendFile(serip string, absfilepath string, fname string, message string,
return return
} }
defer conn.Close() defer conn.Close()
// 3、读取文件
zf, err := os.Open(absfilepath)
if err != nil {
return
}
defer zf.Close()
// 4、 循环读取,写入
buf := make([]byte, 4096)
for {
n, err := zf.Read(buf)
if err != nil {
if err == io.EOF {
fmt.Println("文件发送完毕")
} else {
fmt.Printf("zf read err:%s\n", err)
}
return
}
conn.Write(buf[:n])
}
// 3、在端口发送数据 // 3、在端口发送数据
//message := fmt.Sprintf("%s%s%s", config.G.DeviceName, "|", "sender") // message := fmt.Sprintf("%s%s%s", config.G.DeviceName, "|", "sender")
// 向链接通道发送数据 数据包头 // 向链接通道发送数据 数据包头
conn.Write([]byte(message)) // conn.Write([]byte(message))
// 发送文件 // 发送文件
go func() { // go func() {
err := util.SendFiles(absfilepath, fmt.Sprintf("http://%s", remoteAddr)) // err := util.SendFiles(absfilepath, fmt.Sprintf("http://%s/rc", remoteAddr))
if err != nil { // if err != nil {
fmt.Printf("Send file to %s error: %s\n", remoteAddr, err) // fmt.Printf("Send file to %s error: %s\n", remoteAddr, err)
} // }
}() // }()
} }

BIN
fss/fss

Binary file not shown.

2
fss/util/fsutil.go

@ -315,7 +315,7 @@ func CompressToZip(dest string, currentPath string, paths []string) error {
if dir, err := os.Getwd(); err == nil { if dir, err := os.Getwd(); err == nil {
filesPath = dir + "/sync_zips/" filesPath = dir + "/sync_zips/"
} }
if err := os.MkdirAll(filesPath, 0755); err != nil { if err := os.MkdirAll(filesPath, os.ModePerm); err != nil {
fmt.Println(err.Error()) fmt.Println(err.Error())
} }
// ToSlash 过滤windows的斜杠引起的bug // ToSlash 过滤windows的斜杠引起的bug

Loading…
Cancel
Save