3 changed files with 147 additions and 0 deletions
@ -0,0 +1,44 @@ |
|||
package core |
|||
|
|||
import ( |
|||
"encoding/json" |
|||
"fmt" |
|||
"net/http" |
|||
"runtime" |
|||
) |
|||
|
|||
type Dtm struct { |
|||
TotalAlloc string `json:"total_alloc"` |
|||
Alloc string `json:"alloc"` |
|||
} |
|||
|
|||
// 获取内存信息
|
|||
func Dtmem(w http.ResponseWriter, r *http.Request) { |
|||
var m runtime.MemStats |
|||
runtime.ReadMemStats(&m) |
|||
|
|||
dtm := Dtm{ |
|||
TotalAlloc: fmt.Sprintf("%d", m.TotalAlloc), |
|||
|
|||
Alloc: fmt.Sprintf("%v MB", m.Alloc/1024), |
|||
} |
|||
|
|||
w.Header().Set("Content-Type", "application/json") |
|||
json.NewEncoder(w).Encode(dtm) |
|||
|
|||
//
|
|||
// jsonobj, err := json.Marshal(m)
|
|||
// if err != nil {
|
|||
// fmt.Fprintf(w, "json marshal faild %v", err)
|
|||
// return
|
|||
// }
|
|||
|
|||
// fmt.Fprintf(w, "%s", jsonobj)
|
|||
|
|||
// usage:=m.TotalAlloc/1024/1024
|
|||
// free:=m.Free/1024/1024
|
|||
|
|||
// //
|
|||
// fmt.Fprintf("总分配内存: %v MB\n", m.TotalAlloc/1024/1024)
|
|||
// fmt.Fprintf("已分配内存: %v MB\n", m.Alloc/1024/1024)
|
|||
} |
|||
@ -0,0 +1,101 @@ |
|||
package main |
|||
|
|||
import ( |
|||
"fmt" |
|||
"fssc/config" |
|||
"net/http" |
|||
"os" |
|||
"path/filepath" |
|||
|
|||
"fssc/internal/discovery" |
|||
"fssc/internal/handler" |
|||
"fssc/web" |
|||
|
|||
"github.com/urfave/cli/v2" |
|||
) |
|||
|
|||
var ( |
|||
port string |
|||
) |
|||
|
|||
// 初始化配置
|
|||
func initConfig(c *cli.Context) error { |
|||
return config.G.SetConf(port) |
|||
} |
|||
|
|||
// 发送端
|
|||
func sendClient() error { |
|||
// 发送者角色
|
|||
go discovery.Send(discovery.Sender) |
|||
//udp 监听指定路径下的文件
|
|||
go discovery.Listen(discovery.Receiver, config.G.FilePath) |
|||
|
|||
url := fmt.Sprintf("http://%s:%s", config.G.LocalIP, config.G.Port) |
|||
fmt.Printf("Server address: %s\n", url) |
|||
|
|||
http.HandleFunc("/", handler.SendHandler) |
|||
// ico
|
|||
http.HandleFunc("/favicon.ico", func(w http.ResponseWriter, r *http.Request) { |
|||
w.Header().Set("Content-Type", "image/x-icon") |
|||
http.ServeFile(w, r, "./favicon.ico") |
|||
}) |
|||
// 加载静态资源
|
|||
http.Handle("/static/", http.StripPrefix("/static/", |
|||
http.FileServer(http.FS(web.StaticFs)))) |
|||
|
|||
// 文件更新包
|
|||
http.HandleFunc("/up", handler.UpServer) |
|||
// 传送单文件
|
|||
http.HandleFunc("/sup", handler.Supfile) |
|||
// udp 传送文件
|
|||
http.HandleFunc("/sendZip", handler.SendZip) |
|||
// 监视目标的fs json
|
|||
http.HandleFunc("/nf", handler.NfTest) |
|||
// web console
|
|||
http.HandleFunc("/console", handler.WebConsole) |
|||
|
|||
fmt.Println("send file to server...") |
|||
|
|||
return http.ListenAndServe(config.G.WildcardAddress, nil) |
|||
} |
|||
|
|||
// 入口函数
|
|||
func main() { |
|||
app := &cli.App{ |
|||
Name: "fssc", |
|||
Usage: "file transfer tool", |
|||
UsageText: "fssc [global options] [filename|foldername]", |
|||
Description: "fssc is a simple command-line tool send file/folder", |
|||
Flags: []cli.Flag{ |
|||
&cli.StringFlag{ |
|||
Name: "port", |
|||
Value: "9099", |
|||
Usage: "server port", |
|||
Aliases: []string{"p"}, |
|||
Destination: &port, |
|||
}, |
|||
&cli.BoolFlag{ |
|||
Name: "version", |
|||
Aliases: []string{"v"}, |
|||
Usage: "print the version", |
|||
}, |
|||
}, |
|||
Action: func(c *cli.Context) error { |
|||
|
|||
if c.NArg() > 0 { |
|||
currentPath := filepath.ToSlash(c.Args().Get(0)) |
|||
config.G.FilePath = currentPath |
|||
return sendClient() |
|||
} else { |
|||
fmt.Println("no input args") |
|||
return nil |
|||
} |
|||
//return receiveClient()
|
|||
}, |
|||
Before: initConfig, |
|||
} |
|||
err := app.Run(os.Args) |
|||
if err != nil { |
|||
fmt.Println(err.Error()) |
|||
} |
|||
} |
|||
Loading…
Reference in new issue