Filegogo 开源项目教程
1. 项目的目录结构及介绍
Filegogo 项目的目录结构如下:
filegogo/
├── cmd/
│ ├── server/
│ │ └── main.go
│ └── client/
│ └── main.go
├── pkg/
│ ├── config/
│ │ └── config.go
│ ├── p2p/
│ │ └── p2p.go
│ └── utils/
│ └── utils.go
├── internal/
│ ├── handler/
│ │ └── handler.go
│ └── service/
│ └── service.go
├── web/
│ ├── index.html
│ └── style.css
├── go.mod
├── go.sum
└── README.md
目录结构介绍
cmd/
: 包含项目的入口文件,分为server
和client
两个部分。server/
: 服务器端入口文件main.go
。client/
: 客户端入口文件main.go
。
pkg/
: 包含项目的公共包。config/
: 配置文件处理包config.go
。p2p/
: 点对点通信处理包p2p.go
。utils/
: 工具函数包utils.go
。
internal/
: 内部包,不对外暴露。handler/
: 请求处理包handler.go
。service/
: 服务层逻辑包service.go
。
web/
: 前端静态文件。index.html
: 主页文件。style.css
: 样式文件。
go.mod
和go.sum
: Go 模块文件。README.md
: 项目说明文档。
2. 项目的启动文件介绍
服务器端启动文件
服务器端的启动文件位于 cmd/server/main.go
。该文件主要负责启动服务器,监听端口并处理客户端请求。
package main
import (
"log"
"net/http"
"github.com/a-wing/filegogo/internal/handler"
)
func main() {
http.HandleFunc("/", handler.HandleRequest)
log.Println("Server started at :8080")
log.Fatal(http.ListenAndServe(":8080", nil))
}
客户端启动文件
客户端的启动文件位于 cmd/client/main.go
。该文件主要负责启动客户端,连接服务器并进行文件传输。
package main
import (
"log"
"github.com/a-wing/filegogo/pkg/p2p"
)
func main() {
log.Println("Client started")
p2p.StartClient()
}
3. 项目的配置文件介绍
Filegogo 项目的配置文件处理位于 pkg/config/config.go
。该文件定义了项目的配置结构体和加载配置的方法。
package config
import (
"log"
"os"
"encoding/json"
)
type Config struct {
ServerAddress string `json:"server_address"`
Port int `json:"port"`
}
func LoadConfig(path string) (*Config, error) {
file, err := os.Open(path)
if err != nil {
return nil, err
}
defer file.Close()
var config Config
decoder := json.NewDecoder(file)
err = decoder.Decode(&config)
if err != nil {
return nil, err
}
return &config, nil
}
配置文件示例
{
"server_address": "localhost",
"port": 8080
}
该配置文件定义了服务器地址和端口,供项目启动时加载使用。